目前使用来自FFPMEG的lib来流式传输一些MPEG2 TS(h264编码)视频。流传输是通过UDP多播完成的。
我目前遇到的问题主要有两个方面。获取视频时需要很长的初始连接时间(流还包含元数据,并且我的媒体工具会立即检测到该流)。
一旦视频开始运行,一切都很好但总是延迟了初始连接时间。
我想尽可能接近LIVE流媒体。
目前使用av_dict_set(& dict," tune"," zerolatency",0)和" profile" - > "基线"选项。
GOP大小= 12;
起初我认为问题是i帧问题,但如果gopsize为12或默认为250,则会出现初始延迟。有时视频会快速连接,但会立即丢失,延迟发生,然后重新启动起来,从那时起就很好。
根据文档,零延迟选项应该发送许多i帧,以限制初始同步延迟。
我开始认为它是一个缓冲类型问题,因为当我关闭应用程序并离开媒体播放器时,它会快速转发延迟直到它基本上达到文件停止流式传输的位置。
答案 0 :(得分:0)
因此,虽然我不完全理解错误,但我至少解决了我遇到的问题。
问题来自于在写出视频帧时使用av_write_interleaved_frame()与常规av_write_frame()(这适用于实时流)。我需要更深入地了解它们之间的差异才能完全理解它,但有时候你会如何在抨击你的脸几天之后弄清楚你所遇到的问题。
我可以通过调整" zerolatency"获得非常好的直播视频流。选项集。