繁体   English   中英

当没有新帧到达 /dev/video0 时,我如何停止 ffmpeg

[英]How can i stop ffmpeg when no new frame come to /dev/video0

我像这样在我的系统中使用 ffmpeg。

camera => (Frame modifier) => /dev/video0 => ffmpeg => (.ts file)

[相机]

  1. stream 30fps 电影

[框架修饰符]

  1. 从相机修改电影帧
  2. 基本上是 output 30fps 电影
  3. 有时它不能在一秒钟内处理 30 帧,并且 output 小于 30 帧

我想要 ffmpeg output.ts 文件,如下所示。

  1. 每个文件 5 秒
  2. 总是 30fps
  3. 如果输入小于 30fps,则复制帧
  4. 如果 /dev/video0 1 秒内没有输入,则停止 ffmpeg 或停止 ffmpeg output.ts 文件,直到重新输入

现在我使用下面的 ffmpeg 选项。

ffmpeg -f v4l2 -i /dev/video0 -g 150 -vf fps=30 -c:v h264_nvenc -hls_time 5 -hls_segment_filename foo_%d.ts foo.m3u8

它在以下情况下工作正常。

  1. 当新帧来到 /dev/video0
    1. 它 output 30 fps.ts 文件每 5 秒
  2. 当我启动 ffmpeg 时没有帧到达 /dev/video0
    1. ffmpeg 立即停止

但它在以下情况下不起作用。

  1. (启动 ffmpeg) => (停止输入帧到 /dev/video0) => (重新启动输入帧到 /dev/video0)
    1. ffmpeg 停止 output.ts 文件时停止输入帧到 /dev/video0
    2. 当重新启动输入帧到 /dev/video0, ffmpeg output many.ts 文件一次
      1. 它包含相机停止前相同的时间静止图像
      2. 我不想要 ffmpeg output 这个 useless.ts 文件

我应该如何修改 ffmpeg 选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM