Откройте необработанный звук с помощью avformat_open_input

Я хочу заполнить ffmpeg.formatCtx для raw(LINEAR16,48000khz) аудиофайла, используя avformat_open_input().

Я пытался пройти свой AVInputFormat, но не преуспел в этом.

Вот так я открывал файл.

std::string fn = "file:" + this->file.path;
int r = avformat_open_input(&ffmpeg.formatCtx, fn.c_str(), nullptr, nullptr);

Пытался найти нужный формат с av_find_input_format(), но не получилось0.

Без входного формата ffmpeg определяет файл как mp3.

Есть ли удобный способ сделать это?


person IMelker    schedule 05.11.2019    source источник
comment
Значения размера выборки, типа, порядка байтов, частоты и т. д. не сохраняются в необработанном аудиопотоке, поэтому ffmpeg не может их прочитать. Вы должны вручную установить их в контексте кодека.   -  person szatmary    schedule 05.11.2019


Ответы (1)


Основные вещи, которые выполняются в avformat_open_input:

  • Выделите память для AVFormatContext и заполните AVFormatContext.
  • Пытается угадать формат входного файла, параметр кодека для входного файла.

Поскольку у вас есть только необработанные аудиоданные, вам нужно выделить память для AVFormatContext и заполнить AVFormatContext самостоятельно.

В противном случае необработанные аудиоданные не нужно демультиплексировать и декодировать, я думаю, вам не следует использовать avformat_open_input.

person BrianChen    schedule 15.11.2019