フロー(プロトコルrtsp、コーデックh264)をファイル(コンテナmp4)に保持するにはどうすればよいですか?つまり、(CCTVカメラを使用して)エンドレスストリームを入力すると、5〜10分の記録時間のmp4形式のサイズで出力ファイルが生成されます。
OS:debian、ubuntuソフトウェア:vlc、ffmpeg(avconv)
現在、このスキームが使用されています:
cvlc rtsp://admin:[email protected]:554/ch1-s1 --sout=file/ts:stream.ts
ffmpeg -i stream.ts -vcodec copy -f mp4 stream.mp4
ただし、ビデオを連続して記録することはできません(再起動の間、vlcは約10秒のライブビデオを失います)。
この質問 を参照し、サーバー障害について回答してください。つまり、ツールを切り替えます。 avconvはあなたがやりたいことをします。 (ffmpegはavconvになりました。)
探している機能はセグメンテーションと呼ばれます。コマンドラインは次のようになります。
avconv -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-%03d.mp4"
Alexander Gardenソリューションは、以下のバージョンを使用してffmpep
で動作します。 avconv
をffmpeg
に置き換えます。
./ffmpeg -i rtsp://10.2.2.19/live/ch01_0 -c copy -map 0 -f segment -segment_time 300 -segment_format mp4 "capture-%03d.mp4"
バージョンに関するFFmpegの混乱、ubuntu分裂、および迅速な開発のため、このヘッダーを含めています。
ffmpegバージョンN-80023-Gd55568d Copyright(c)2000-2016 gcc 4.8(Ubuntu 4.8.4-2ubuntu1〜14.04.1)構成でビルドされたFFmpeg開発者:--prefix =/home/rhinchley/q10/ffmpeg_build --pkg -config-flags =-static --extra-cflags = -I/home/rhinchley/q10/ffmpeg_build/include --extra-ldflags = -L/home/rhinchley/q10/ffmpeg_build/lib --bindir =/home/rhinchley/q10/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis- enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree libavutil 55. 24.100/55. 24.100 libavcodec 57. 42.100/57. 42.100 libavformat 57. 36.100/57. 36.100 libavdevice 57. 0.101/57. 0.101 libavfilter 6. 45.100/6. 45.100 libswscale 4. 1.100/4. 1.100 libswresample 2. 0.101/2. 0.101 libpostproc 54. 0.100/54. 0.100
チームワーク:ビデオソースを分割し、2つのプロセスで時間フレームを交互に記録します。起動時間がどれほど変動するか、またどれだけ変動するかをテストする必要があります。プロセスの優先順位をリアルタイムに設定して、開始時間の変動を減らすことができます。いくつかのオーバーラップがありますが、それは私が推測することからあなたのアプリケーションにとっては大丈夫かもしれないように聞こえます。例:
p1: sRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRR...
p2: wwwwwwwwwsRRRRRRRRRwwwwwwwwsRRRRRRRRRwwwwwwwww...
time -->
s: startup
R: running
w: wait