2

如何使用 FFMPEG 为从(v4l2)网络摄像头发送到媒体服务器的流添加延迟?

这里的用例类似于安全摄像头,当在视频中检测到某些内容时,我希望能够将视频流式传输到服务器。确保在视频中捕获感兴趣的事件的最简单方法是使用 FFMPEG 从摄像机流式传输到虚拟环回设备,并增加延迟。然后,当感兴趣的事件发生时,该环回设备可用于启动实时流式传输。

queue在 GStreamer 中,我会使用元素的min-threshold-time参数来完成这种延迟。例如,以下(非常简化的)示例管道在显示之前为来自 v4l2 网络摄像头的输出添加了 2 秒的延迟:

gst-launch-1.0 v4l2src device=/dev/video1 ! queue max-size-buffers=0 max-size-time=0 max-size-bytes=0 min-threshold-time=2000000000 ! xvimagesink

我如何用 FFMPEG 完成同样的事情?有一些技术挑战阻止我们为此使用 GStreamer。

我已经调查了这个itsoffset选项,但据我所知,它只适用于已经录制的文件,目前还不清楚什么是好的选择。

4

1 回答 1

8

使用最近的 git 构建的 ffmpeg,基本模板是

ffmpeg -i input -vf tpad=start_duration=5 -af adelay=5000|5000 stream-out

过滤器将tpad在视频流的开头添加 5 秒的黑色,而 apad 过滤器将为音频的前两个通道添加 5000 毫秒的静音。

于 2018-11-20T05:39:02.873 回答