使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题
Using FFMPEG libs to UDP stream mpeg2 ts video delay / initial connection problems
目前正在使用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()(这适用于实时流式传输)。我必须更多地挖掘差异才能完全理解它,但有趣的是,有时你如何在抨击你的脸几天后一时兴起地找出你遇到的问题。
我可以通过设置"零延迟"选项获得非常好的实时视频流。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 使用 FFMPEG 库到 UDP 流 mpeg2 ts 视频延迟/初始连接问题
- Winsock 200毫秒延迟问题
- 仅visual studio 2010中存在可延迟迭代器问题
- 设计问题:从低延迟的c++应用程序更新数据库
- c++预处理器延迟扩展问题
- Windows (c++)上窗口消息的问题(延迟)
- 具有延迟传播时间限制问题的分段树
- singleton的延迟初始化问题
- openCV-网络摄像头的视频捕获-延迟问题