我正在使用 ffmpeg 同时录制四个 1080p 视频流,我想在录制时实时查看这些流。理想情况下,我想从一台单独的机器上查看它们,使用一些方便的 Linux 数据共享方法,如 ssh/sshfs/...,但这是一个很好的选择。有没有实用的方法来实现这一点?
我目前使用的ffmpeg录音命令是这样的:
ffmpeg \
-f v4l2 -i $cam0 \
-f v4l2 -i $cam1 \
-f v4l2 -i $cam2 \
-f v4l2 -i $cam3 \
-f matroska \
-map 0 \
-map 1 \
-map 2 \
-map 3 \
-c copy \
$output.mkv
如果我可以使用类似ffplay
或的命令vlc
来播放一个或多个视频流,并始终在接近流的末尾进行跟踪,并在数据可用时播放更多视频,那么我的问题将得到解决。不过我还没有找到这样的选择。
一种替代方法可能是让录制 ffmpeg 过程也将四个 1080p 视频平铺到一个 4K 网格中,并将其通过管道传输到 ffplay。然后我至少可以在录制的同一台机器上预览。我一直无法计算出正确的 ffmpeg 命令来进行平铺,希望能举个例子。
这可以通过 TS 容器输出来完成。
ffmpeg \
-f v4l2 -i $cam0 \
-f v4l2 -i $cam1 \
-f v4l2 -i $cam2 \
-f v4l2 -i $cam3 \
-f mpegts \
-map 0 \
-map 1 \
-map 2 \
-map 3 \
-c copy \
$output.ts
并用于监控,
ffmpeg -sseof -3 -i $output.ts -map 0:v:0 -f sdl2 -
这将尝试根据 ffmpeg 解析文件时记录的持续时间从文件末尾寻找 3 秒,并显示第一个流。预计播放前会有一些延迟,因为 ffmpeg 等待关键帧。
要组合所有四个流,您需要添加堆栈过滤器,例如 xstack。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句