ストリーミングなMotionJPEGをMP4にする
メモ程度に。
AXISやPanasonicのカメラからの出力を取る方法。
【MJPG動画取得方法】
wgetでもいいけど、SIGINTなりSIGTERMとか出さないといけなさそうで、
並列処理させるのめんどくさそうだったので、時間制限かけれるの使いたい。
curl使えそうだったので使います。
curl -o test.mjpg “http://192.168.1.200/nphMotionJpeg?Resolution=640×320&Framerate=10” -u administrator:password -m 10
-uでBASIC認証のユーザ名とパスワード設定
-mで最大接続時間の設定。
10秒間取得、ではないのだけど、とりあえずこれで問題ないかなと。
【動画エンコード】
avconvとか使ってみたけどなんかダメで、ffmpeg使うことに。
fps(Framerate)合わせないと、早送りになったり、画像動かなかったりで。
ffmpeg -r 10 -i test.mjpg -r 10 -b 1000k -vcodec libx264 test.mp4
-iは入力動画指定。
1個目の-r 10で入力動画フレームレートを10fpsに。
2個目の-r 10で出力動画フレームレートを10fpsに。
-b 1000kはビットレートを1000kbps(1Mbps)に。(大きすぎ?)
-vcodec libx264でコーデックをx264にする。
flvにする場合は、-vcodec libx264省いて、そのままtest.flvって指定。
以下それまでの失敗
ffmpeg -i test.mjpg -r 1 -b 1000k test.flv
→失敗早送りになる(5秒動画)
curlのURLにFramerate設定無し
→カメラ側の設定フレームレートになるらしく値わかんなくてダメ。
ffmpeg -i test.mjpg -b 1000k test.flv
→普通に早送りになる 何もしないとデフォfps使うらしい
avconv -i test.mjpg -r 0.1 test.flv
→これで動画が10秒になった!と思ったのも束の間、動画が一切動かない
avconv -i test.mjpg test.flv
→デフォのfps25でやるので、バリ早再生
UbuntuのApache2利用時にWebDAVアクセスの場合のumask Perlでビット演算するときの注意