FFmpeg avformat_open_input с файлом, расположенным в памяти

Я хочу декодировать интернет-аудиопоток, но не хочу записывать данные на диск, поэтому данные находятся только в памяти.

Но когда я хочу декодировать данные в raw-данные, я должен инициализировать формат-контекст и поэтому мне нужно использовать avformat_open_input. Но эти функции требуют подробного расположения файла.

У кого-нибудь есть решение, как я могу поместить данные, расположенные в моей памяти, в формат-контекст, чтобы декодировать эти данные в необработанные данные?

4

Решение

Вы должны создать пользовательские AVIOContext,

Подробнее см. Мой ответ на Воспроизвести видео из MemoryStream, используя FFMpeg

4

Другие решения

Вам не нужен файл, просто откройте URL-адрес вашего аудиострима. как это:

AVFormatContext *ic = avformat_alloc_context();
err = avformat_open_input(&ic, "rtmp://www.something.com/a.mp4", NULL, NULL);
1

По вопросам рекламы [email protected]