FFMPEG:解析器如何向解码器提供输入比特流

时间:2013-12-24 11:02:48

标签: video ffmpeg

我将视频解码器集成到FFMPEG中。对于这个解码器,我有一个解析器,它从输入比特流(基本流)读取数据,并在需要时向解码器提供数据。我在解析器中使用fread()函数来读取输入比特流。

然而,当我在libavcodec/目录中看到其他可用解码器的解析器时,它们中似乎没有一个fread。试图通过调试代码找出这个机制,但没有得到重新调整相同的线索。所以我要求是否有人可以提供一些关于解码器如何获得所需数据的解释,即使它的解析器似乎没有任何误差?我的意思是这里使用什么机制来从输入文件中读取数据。

关于相同的任何建议/答案对我来说真的很有帮助。请尽量帮助,因为它可以帮助很多人阅读这篇文章。提前谢谢。

- 问候

1 个答案:

答案 0 :(得分:3)

fread()调用在管道中更早出现 - 从输入阶段开始,假设输入来自文件(相对于网络流或标准输入或光盘或其他内容)。解复用器层(在您的情况下为基本流)将向输入层询问数据。

然后,如果您已通过-vbsf命令行选项指定了视频比特流过滤器,则压缩视频数据将在到达视频解码器之前通过该过滤器。< / p>