C语言 What does the avformat_open_input() do?



我遵循这段代码与c中的FFmpeg库一起工作。FFmpeg库的文档很少,很难理解每个函数的确切作用。

我理解代码(正在做什么)。但我说得不够清楚。有人能帮我一下吗?

Q1) A **struct AVFrameContext ****和filename(所需的最小非null参数)被传递给函数avformat_open_input()。顾名思义,输入文件是"打开的"。如何?

在file_open中完成的主要事情是

  • 为AVFormatContext分配内存
  • 从文件(输入url)中读取probe_size about的数据
  • 尝试猜测输入文件的格式、编解码器参数。这是通过为每个demuxer
  • 调用read_probe函数指针来完成的。
  • 分配编解码器上下文、解绑定上下文、I/O上下文。

您可以在FFmpeg的libavformatutils.c中查找实际发生的情况:

int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputFormat *fmt, AVDictionary **options)
{
    AVFormatContext *s = *ps;
    int ret = 0;
    AVDictionary *tmp = NULL;
    ID3v2ExtraMeta *id3v2_extra_meta = NULL;
    if (!s && !(s = avformat_alloc_context()))
        return AVERROR(ENOMEM);
        // on and on

相关内容

  • 没有找到相关文章

最新更新