坚持使用 SDL 和 ffmpeg 库用 C 语言编写一个非常基本的媒体播放器。最初,按照本页中的理论来了解整个程序和库的使用。在从头开始编码之后,感谢该教程和许多其他资源,最后我使用最新的 ffmpeg 和 SDL (2.0) 库完成了我的代码工作。但是我的代码缺少适当的同步机制(实际上它缺少同步机制!)。
我仍然不清楚如何将音频和视频同步在一起,因为链接中提供的理论只是部分正确(至少在使用最新的开发库时)。
例如,本页中的一句话如下:
但是,ffmpeg 对数据包重新排序,以便 avcodec_decode_video() 正在处理的数据包的 DTS 将始终与其返回的帧的 PTS 相同。
我正在使用avcodec_decode_video2()并且数据包的 DTS 绝对与它解码的帧的 pts 不同(通常)。
我读了这篇内容非常丰富的 BBC 报道,它完全有道理。我对 PTS 和 DTS 有一个清晰的认识。但是 ffmpeg 用于数据包和解码帧的 PTS 和 DTS 值令人困惑。我希望有一些关于这方面的文件。
有人可以解释同步音频和视频的步骤吗?我只需要步骤。我很乐意实施它们。任何帮助是极大的赞赏。谢谢 !
PS:这是我正在谈论的截图:
巨大的负值是,我假设 AV_NOPTS_VALUE。