rtmp配信 on_play でセキュリティをかけ、さらにffmpeg – i で再エンコしたい時の認証について

Nginx rtmp-module で rtmp配信を行う際に
on_play にてsecure linkを使ってっていると、ffmpegで再エンコする際にも処理が必要になる。

成功例

1.エンコーダから受信する時のセキュリティ
エンコーダから映像を受け取る時は
on_publish http://localhost/publishauth/auth.php;
notify_method get;
を通してストリーム名の中にユーザ名とパスワードが通るようにしている。

2.application live で再生されないようにするためのセキュリティ
allow play 127.0.0.1;
deny play all;
他のクライアントから再生されないようローカルのみ再生可とした
※この2つはセットにする事

3.application multi に渡すときのセキュリティ
allow publish 127.0.0.1;
deny publish all;
他のエンコーダからストリームを受け付けないようローカルから回ってきたものだけを許可
※この2つはセットにする事

4.直リンクを避けるためのsecurelinkを有効にする
on_play http://localhost:8080/on_play;
notify_method get;
securelinkのキーに従って、再生を許可するか判断する

 

 

○ダメな例

ダメダメ1
以下の設定だと、application multi に行かない。exec ffmpeg -i rtmp://localhost/live/$nameもon_playを通るようで、on_play側で認証を通すようにしなきゃいけない

 

 

ダメダメ2
ローカルからのエンコは許可を書いてみた。
on_playで回ってくるときは全部127.0.0.1で来るらしくすべて許可になってしまう。

ダメダメ3

ffmpeg -i がダメならpush ならいいだろうと思ったら甘かった。pushしてもon_playを通るらしい。