Что делает avformat open input ()?

Я этой код для работы с библиотекой ffmpeg в C . библиотека ffmpeg имеет очень мало документации, и трудно понять, что именно делает каждая функция .
Я понимаю код (что делается). Но мне не хватает ясности . Кто-нибудь может мне помочь ?

Q1) A struct AVFrameContext ** * * * и * * имя файла (минимальные ненулевые параметры, необходимые) передаются функции avformat_open_input (). Как имя предполагает, что входной файл "открыт". Как ?

2 ответов


основные вещи, которые делается в file_open являются

  • выделить память для AVFormatContext.
  • прочитайте probe_size о данных из файла (входной url)
  • пытается угадать формат входного файла, параметр кодека для входного файла. Это делается путем вызова указателя функции read_probe для каждого из demuxer
  • выделить контекст кодек, извлечен контекст, а контекст.

Вы можете посмотреть его в ffmpeg это libavformat\utils.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