本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
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>