ffmpegのストリーム収録でパケットロスを無くす!
ffmpegのPathを通さない運用方法
Pathを通すのが面倒くさいので、私は以下のような運用にしています。
- ffmpegのZipをダウンロード、展開
- できたフォルダをffmpegとリネームしCドライブに置く
- コマンドプロンプトでは”C:\ffmpeg\bin\ffmpeg.exe”と記述し、exeを起動
パケットロスの抑制
ストリームをファイル化するときに、パケットロスがパラパラ出る方は以下の一文を足してみてください。
-rtsp_transport tcp
以下、上記の要素を取り入れたファイル化.cmd例文です。
- 192.168.0.xxのRTSPストリームを
- 2時間5分
- フレームレートは入力追従
- エンコードはせずコピーで
- Dドライブのフォルダ「VTR_1080」に
- ClipA_年月日_時分.mp4というファイルを作るスクリプトです。
- ストリームはH.264でエンコードされたもので実験しています。
- ストリームからファイルにコピーするだけの超軽量処理なので、複数走らせてもびくともしません。
@echo off echo %date% echo %time% set yyyy=%date:~0,4% set mm=%date:~5,2% set dd=%date:~8,2% set time2=%time: =0% set hh=%time2:~0,2% set mn=%time2:~3,2% set ss=%time2:~6,2% echo Now Recording "C:\ffmpegm\bin\ffmpeg.exe" -y -re -rtsp_transport tcp -i rtsp://192.168.0.xx/input1/h264/stream_1 -vcodec copy -acodec copy -t 02:05:00 D:\VTR_1080\ClipA_%yyyy%%mm%%dd%-%hh%%mn%.mp4
おまけで、再生するときです。こちらもいろいろオプションあるので探してみてください。-fsはフルスクリーン起動です。
"C:\ffmpeg\bin\ffplay.exe" -fs -rtsp_transport tcp rtsp://192.168.x.xx/inputA/h264/stream_1