本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
nginx rtmp-moduleでセキュアオンデマンド
nginx rtmp-module はオンデマンド映像配信できる。
単にファイルをHTML5形式のvideo タグ再生するという意味ではなくmp4,flvをrtmpで配信する事ができる。これができると、セキュリティ的にちょっとだけ向上する。HTML5のvideoタグだと右クリック映像ダウンロードなんて簡単だが、rtmpで配信できれば、通常の方法だとダウンロードできない。(ただ、巷にはrtmpをダウンロードするファイルは出回ってるし、画面キャプチャされちゃえばどんなに頑張ってもデータ化されちゃうけどね。)
録画flvにはindexがつかない
んで、いざflvをオンデマンド配信してみたら、
あら、画面が小さい。おかしい。それにseekできない。なんじゃこりゃ。
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もできない。
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にindexをつける方法
なので、FLV metadata indexerを利用してindexをつける必要がる。rarutさんが推奨してるのはYamdiで、Yamdiは少ないメモリでも早く動く。大きなファイルを扱う事もできる。このほかにもflvmetaを使ってみたがaspect retioは思い通りになったものの、seekできないファイルが大きくなると扱えないのだと思う。
yamdiの使い方
w3m https://sourceforge.net/projects/yamdi/files/yamdi/1.9/
yamdi-1.9.tar.gz をダウンロード
tar xzf yamdi-1.9.tar.gz cd yamdi-1.9 gcc yamdi.c -o yamdi -O2 -Wall
して、できたyamdiを/usr/sbinに入れて、
sudo /usr/sbin/yamdi -i test.flv -o test_meta.flv
としたら、見事seekもできるし、解像度もちゃんと表示できるようになった。
これを録画終了と同時に自動的に行う事ができる。
こんな感じで
application multi { live on; record all; record_path /tmp/rec; exec_record_done yamdi -i $path -o /tmp/rec2/$basename; allow publish 127.0.0.1; on_play http://localhost:8080/on_play; }
大きいファイルになると、
flvtools2もだめだった
flvmetaもだめだった。
ちなみに、Ubuntu 5.4.0-6ubuntu1~16.04.2 でインストールできる
apt-cache show yamdi Package: yamdi Priority: extra Section: universe/utils Installed-Size: 84 Maintainer: Ubuntu MOTU Developers Original-Maintainer: Todd Troxell Architecture: amd64 Version: 1.4-2
では、seekはできるようになったものの、aspect ratioが4:3になってしまい使えなかった。