【问题标题】:FFMPEG: How input data is fed to the decodersFFMPEG:如何将输入数据馈送到解码器
【发布时间】:2014-02-12 11:49:29
【问题描述】:

在 FFMPEG 中,集成了许多视频解码器。其中之一是 H264。现在,在 FFMPEG 中,解码器的哪一部分负责为解码器提供必要的输入数据给解码器,以便解码器对其进行解码?

我已经浏览了解码器的大部分代码,但无法找到发生任何事情的地方。

我只知道在 FFMPEG 源的libavutils 目录中有一个名为file.c 的文件。在这个文件中使用了一个 read() 函数。但是,h.264 解码器如何将其传送到 ffmpeg 以发送一些数据进行解码。

任何与此相关的建议都会对我很有帮助。请务必提出您的宝贵建议。

提前致谢。

【问题讨论】:

  • demuxing_decoding.cdecoding_encoding.c in doc/examples 可能对您有用。

标签: video ffmpeg libavcodec


【解决方案1】:

ffmpeg 由几个库组成。您已经提到过 libavutil,这个库提供了从文件或网络读取数据的低级访问。接下来,该数据由 libavformat 处理。该库知道如何读取可能不同的容器格式和协议(mp4、mkv、rtmp 等),并将各个帧提取到 AVPacket 结构中。然后将每个 AVPacket 提供给作为 libavcodec 一部分的解码器。

【讨论】:

  • 感谢您的回答。关于这一点的另一个疑问是,即使在 vlc 中,我们也有 libavcodec。那么我可以使用我在 FFMPEG 中创建的相同 libavcodec 将我的解码器集成到 vlc 中吗?请提出建议。
  • 您可以编译 vlc 并将其链接到您的自定义 libavcodec。
  • 你可以为此提出一些建议吗:stackoverflow.com/questions/21756638/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多