是否可以同时捕获(录制)RTSP 流and使用单个 ffmpeg 命令捕获场景变化事件?我几乎可以做我想做的事:
ffmpeg -i 'rtsp://mystream' \
-map 0:v -map 0:a -c:v copy -c:a copy -f segment \
-segment_time 300 -segment_format matroska -strftime 1 "%Y%m%d%H%M%S_video.mkv" \
-map 0:v -an -filter:v "select='gt(scene,0.1)'" -frames:v 1 "%Y%m%d%H%M%S_scenechange.png"
这为我提供了保存到磁盘的 300 秒流片段,以及检测到场景更改时的 scene.png。However, scene.png 仅在我终止进程时出现,并且当我这样做时,我只获得最后一个场景事件。理想情况下,我希望在检测到场景变化时获取新的 PNG(或者更好的是短视频剪辑),而不会中断 video.mkv 的录制。我确信它可以通过管道和多个 ffmpeg 命令来完成,但为了简单起见(此时主要是我自己的好奇心),我想看看仅用一个进程可以完成什么。
With -frames:v 1
,您只会得到一张图像输出。如果图像输出没有 strftime,则按字面意思使用名称字符串。您还需要使用 -vsync 0 停止 ffmpeg 为图像输出生成恒定帧速率流(由于您将总输出限制为 1 帧,所以没有注意到)
Use
ffmpeg -i 'rtsp://mystream' \
-map 0:v -map 0:a -c:v copy -c:a copy -f segment \
-segment_time 300 -segment_format matroska -strftime 1 "%Y%m%d%H%M%S_video.mkv" \
-map 0:v -an -filter:v "select='gt(scene,0.1)'" -vsync 0 -strftime 1 "%Y%m%d%H%M%S_scenechange.png"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)