使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题

Using FFMPEG libs to UDP stream mpeg2 ts video delay / initial connection problems

本文关键字:延迟 问题 连接 视频 ts 库到 FFMPEG UDP mpeg2 使用      更新时间:2023-10-16

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

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

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

我正在尝试尽可能接近直播。

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

GOP 大小 = 12;

起初我以为问题是 i 帧问题,但如果 gopsize 为 12 或默认为 250,则存在初始延迟。有时视频会快速连接,但它会立即被丢弃,发生延迟,然后它开始备份并且从那时起就很好。

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

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

因此,虽然我不完全了解出了什么问题,但我至少解决了我遇到的问题。

问题来自在写出视频帧时使用 av_write_interleaved_frame() 与常规av_write_frame()(这适用于实时流式传输)。我必须更多地挖掘差异才能完全理解它,但有趣的是,有时你如何在抨击你的脸几天后一时兴起地找出你遇到的问题。

我可以通过设置"零延迟"选项获得非常好的实时视频流。