本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
nginx rtmp のライブストリーミングをサーバに録画したい。
録画する際に、いちいちコンフィグを書き換え、サーバを停止・起動していたはサービスにならない。
なんと便利な事に、htmlを作成する事で、リモート操作する事が可能
リモート録画設定基本
リモート操作のためには、nginx.confの設定でmanualを入れる事、
record all manual;rtmp_controlを受け付けるようにする # rtmp control location /control { rtmp_control all; } Control moduleNGINX-based Media Streaming Server. Contribute to arut/nginx-rtmp-module development by creating an account on GitHub.
httpでアクセスする事で録画開始・終了
そしてここにアクセスすると、録画が開始される
http://hanako.hoge.jp:8080/control/record/start?app=multi&name=test
ここにアクセスすると、録画が止まる
http://hanako.hoge.jp:8080/control/record/stop?app=multi&name=test
実際の設定
nginx.conf serverディレクティブ
severディレクティブはこんな感じ
誰でも録画されちゃうと嫌なので、basic認証がかかった位置にHTMLを配置し、refererを見てこのHTMLからアクセスがあった場合にしか録画が開始できないようにした。
server {
listen 8080;
server_name localhost;
location /on_play {
# set connection secure link
secure_link $arg_st,$arg_e;
secure_link_md5 smbksecretkey$arg_app/$arg_name$arg_e;
# bad hash
if ($secure_link = "") {
return 501;
}
# link expired
if ($secure_link = "0") {
return 502;
}
return 200;
}
# rtmp control
location /control {
#refererを見て、このサーバからのアクセスでなければ受け付けない
valid_referers server_names hanako.hoge.jp;
if ($invalid_referer) { return 403; }
#リモートコントロールを受け付ける
rtmp_control all;
}
}
nginx.conf rtmpディレクティブ
rtmpディレクティブはこんな感じ
rtmp {
server {
listen 1935;
buflen 5s;
notify_method get;
chunk_size 8192;
application multi {
live on;
record all manual;
record_path /tmp/rec;
#作成する録画ファイルにタイムスタンプを付け、同じ名前にならないようにする
record_unique on;
#録画した後 yamdi でキーフレーム作成の処理をする
exec_record_done /usr/sbin/yamdi -i $path -o /tmp/rec2/$basename;
allow publish 127.0.0.1;
on_play http://localhost:8080/on_play;
}
}
HTMLを作成
録画開始・停止htmlはこんな感じ
<html> <body> <a href="http://hanako.hoge.jp:8080/control/record/start?app=multi&name=test" target="_blank">Start rec</a> <a href="http://hanako.hoge.jp:8080/control/record/stop?app=multi&name=test" target="_blank">Stop rec</a> </body> </html>
