【问题标题】:ffmpeg video stream delay in playback?ffmpeg视频流播放延迟?
【发布时间】:2017-02-23 03:54:11
【问题描述】:

我正在尝试在 Windows 上使用 ffmpeg 3.2.2 从 5MP USB 摄像头捕获和流式传输视频。这是我正在使用的命令行:

ffmpeg -f dshow -video_size 320x240 -framerate 30 -i video="HD USB Camera" -vcodec libx264 -preset ultrafast -tune zerolatency -g 60 -f mpegts udp://192.168.1.100:10000

我的流的目的地(同一子网上的一个 Ubuntu 机器)正在通过以下方式运行 ffplay:

ffplay -i udp://127.0.0.1:10000

这可行,但视频流似乎延迟了 8 到 10 秒。据我了解,目的地在收到 I 帧之前无法开始显示流,因此我尝试将 GOP 值指定为 60,认为这将导致每 2 秒插入一个 I 帧(@ 30 FPS)。

执行转码的 Windows 机器运行 i7-3840QM @ 2.80GHz 并具有 32 GB RAM。 FFmpeg 似乎使用的 CPU 很少(如 2%),因此它似乎不受 CPU 限制。作为一个测试,我尝试摄取一个 MP4 文件并且不进行任何转码 (ffmpeg -re -i localFile.mp4 -c copy -f mpegts udp://192.168.1.100:10000),但在 Ubuntu 系统上显示流之前仍然需要几秒钟。

在相关说明中,我还在评估 Wowza Streaming Engine 服务器的试用版,当我将我的 ffmpeg 流定向到 Wowza 时,在 Wowza 测试播放器开始播放之前,我得到相同的 8 - 10 秒延迟.对于它的价值,一旦流开始播放,它似乎运行良好(除了一切都“落后”几秒钟的事实)。

我是视频流的新手,所以我可能在这里遗漏了一些明显的东西,但谁能告诉我可能导致此延迟的原因或建议我如何进一步解决问题?谢谢!

【问题讨论】:

    标签: ffmpeg video-streaming latency wowza


    【解决方案1】:

    尝试设置此值:

    分析整数(输入)

    指定分析多少微秒来探测输入。一个 较高的值将能够检测到更准确的信息,但会 增加延迟。默认为 5,000,000 微秒 = 5 秒。

    探测整数(输入)

    以字节为单位设置探测大小,即要分析得到的数据的大小 流信息。较高的值将能够检测更多 信息,以防它分散到流中,但会增加 潜伏。必须是不小于 32 的整数。它是 5000000 由 默认。

    FFmpeg docs

    【讨论】:

      猜你喜欢
      • 2016-10-04
      • 1970-01-01
      • 2020-05-02
      • 2021-07-24
      • 2018-09-02
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 2019-01-04
      相关资源
      最近更新 更多