在 ffmpeg 录制的同时观看多流视频文件

卢克·戈里

我正在使用 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章