nginx rtmp-module flvファイルをRTMPでオンデマンド配信する

nginx rtmp-module はオンデマンド映像配信できる。
単にファイルをHTML5形式のvideo タグ再生するという意味ではなくmp4,flvをrtmpで配信する事ができる。これができると、セキュリティ的にちょっとだけ向上する。HTML5のvideoタグだと右クリック映像ダウンロードなんて簡単だが、rtmpで配信できれば、通常の方法だとダウンロードできない。(ただ、巷にはrtmpをダウンロードするファイルは出回ってるし、画面キャプチャされちゃえばどんなに頑張ってもデータ化されちゃうけどね。)

んで、いざflvをオンデマンド配信してみたら、

あら、画面が小さい。おかしい。それにseekできない。なんじゃこりゃ。

https://rarut.wordpress.com/page/12/

FLVs recorded with the module are NOT indexed. You can use FLV metadata indexer (like Yamdi: http://yamdi.sourceforge.net/) to index it.

nginx rtmp-module のrecode機能で作成したflvファイルにはindex(metadata)がつかないため、これを再生するとaspect retioもおかしいし、seekingもできない。

https://github.com/arut/nginx-rtmp-module/wiki/Directives#record

If you play FLVs recorded with the record directive please do not forget to index them before playing. They are created unindexed.

record機能を使うとunindexedになる。

なので、FLV metadata indexerを利用してindexをつける必要がる。rarutさんが推奨してるのはYamdiで、Yamdiは少ないメモリでも早く動く。大きなファイルを扱う事もできる。このほかにもflvmetaを使ってみたがaspect retioは思い通りになったものの、seekできないファイルが大きくなると扱えないのだと思う。

http://yamdi.sourceforge.net/

yamdi-1.9.tar.gz をダウンロード

して、できたyamdiを/usr/sbinに入れて、

としたら、見事seekもできるし、解像度もちゃんと表示できるようになった。

これを録画終了と同時に自動的に行う事ができる。

https://github.com/arut/nginx-rtmp-module/wiki/FAQ

こんな感じで

大きいファイルになると、
flvtools2もだめだった
flvmetaもだめだった。

ちなみに、Ubuntu 5.4.0-6ubuntu1~16.04.2 でインストールできる

では、seekはできるようになったものの、aspect ratioが4:3になってしまい使えなかった。