ffmpeg + docker 分時保存 RTSP stream

Image 使用 jrottenberg/ffmpeg:vaapi, 但目前未用到 vaapi. 參數說明如下

  • -acodec copy: 直接使用 audio 的 encoding type 不進行 transcoding
  • -vcodec copy: 直接使用 video 的 encoding type, 不進行 transcoding
  • -f segment: 配合 segment 這種 muxer 進行分段
  • -segment_time 10: 10 秒或是超過 10 秒後碰到了 keyframe 時進行分段
  • -segment_list_flags live: 我們的來源是 live stream
  • -segment_format mpegts: 分段後各檔使用 mpegts 進行 muxing. 用像是 mp4 muxer 時, 產生的檔案播放時的時間會不正確.
  • -strftime 1: 改用 strftime() parsing file path, 而非單純的以數字遞增產生檔名
docker run --rm -v $PWD:/data jrottenberg/ffmpeg:vaapi -i rtsp://10.9.1.151:554 -acodec copy -vcodec copy -f segment -segment_time 10 -segment_list_flags live -segment_format mpegts -strftime 1 /data/cam1-%Y%m%d-%H%M.mpg

另外, Hikvision 的 RTSP URL 格式說明可參考這頁
https://codertw.com/程式語言/532878/