【问题标题】:Using FFMPEG libs to UDP stream mpeg2 ts video delay / initial connection problems使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题
【发布时间】:2015-05-18 18:47:00
【问题描述】:

目前使用来自 FFPMEG 的库来流式传输一些 MPEG2 TS(h264 编码)视频。流是通过 UDP 多播完成的。

我目前遇到的问题主要有两点。初始连接时间很长/要显示视频(流还包含元数据,我的媒体工具会立即检测到该流)。

一旦视频开始播放,一切都会好起来的,但它总是会被初始连接时间延迟。

我正在尝试尽可能接近 LIVE 流媒体。

当前使用 av_dict_set(&dict, "tune", "zerolatency", 0) 和 "profile" -> "baseline" 选项。

GOP 大小 = 12;

一开始以为是i帧的问题,但是如果gopsize是12或者默认250就会出现初始延迟。有时视频会很快连接,但是马上就掉线了,出现延迟,然后又重新开始从那时起就很好。

根据文档,零延迟选项应该发送许多 i 帧,以限制初始同步延迟。

我开始认为这是一个缓冲类型的问题,因为当我关闭应用程序并让媒体播放器保持启动状态时,它会通过延迟快进,直到它基本上到达文件停止流式传输的位置。

【问题讨论】:

    标签: c++ video ffmpeg libavcodec libavformat


    【解决方案1】:

    因此,虽然我不完全明白哪里出了问题,但我至少解决了我遇到的问题。

    在写出视频帧时,问题来自于使用 av_write_interleaved_frame() 与常规 av_write_frame()(这个适用于实时流式传输)。生病必须深入挖掘差异才能完全理解它,但有时你如何在抨击你的脸几天后突然想到你遇到的问题,这很有趣。

    通过设置“零延迟”选项,我可以获得相当不错的实时视频流。

    【讨论】:

    • 好吧,交错写入尝试在内部组织数据包以使它们保持同步。延迟可能是由 FFMPEG 所做的内部缓冲和重新排序引起的。另一方面,您能否更新您的问题以详细说明您如何使用 FFMPEG 进行流式传输?我有兴趣使用 FFMPEG 进行此操作,但我的 FFMPEG 经验非常少。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2023-04-08
    • 1970-01-01
    • 2013-07-26
    • 2012-06-05
    • 2014-12-14
    相关资源
    最近更新 更多