【发布时间】:2019-03-05 20:32:02
【问题描述】:
有谁知道如何减少 DJI FFMPEG 实现的缓冲延迟?似乎应用程序使用此 API 运行的时间越长,延迟就越差。除了 CODEC_FLAG_LOW_DELAY 或 CODEC_FLAG2_FAST 之外,是否有其他特定选项可能有助于减少延迟?我应该在 av_parser_parse2 中设置什么来减少延迟?我当然假设延迟存在于 API 而不是飞机本身 - 无人机似乎不太可能具有缓冲大量视频的存储空间。
【问题讨论】:
有谁知道如何减少 DJI FFMPEG 实现的缓冲延迟?似乎应用程序使用此 API 运行的时间越长,延迟就越差。除了 CODEC_FLAG_LOW_DELAY 或 CODEC_FLAG2_FAST 之外,是否有其他特定选项可能有助于减少延迟?我应该在 av_parser_parse2 中设置什么来减少延迟?我当然假设延迟存在于 API 而不是飞机本身 - 无人机似乎不太可能具有缓冲大量视频的存储空间。
【问题讨论】:
经过一些实验,我发现 av_parser_parse2 方法的 pts/dts 值会影响帧缓冲。 DJI 的示例代码对 pts 和 dts 都使用了 AV_NOPTS_VALUE;这导致视频流中的延迟不断增加。我没有计算这些值,而是每次 got_picture == true 并设置 dts = pts 时将 pts 增加 1000。是的,这是一个 hack,但它有效。希望这将帮助其他遇到此问题的人。如果您使用的是 DJIVideoParser 项目,则可以轻松地对 h264_Decoder.cpp 的 DecoderThread 方法进行此更改。
【讨论】: