Декодировать WMA с FFMpeg в PCM

Я хочу декодировать поток WMA до 16 бит PCM. Теперь у меня есть вопрос, касающийся FFMpeg- каков выходной формат..

len = avcodec_decode_audio2(c, (int16_t *)outbuf, &outbuf_used, inbuf_ptr, size);

это правильная функция для этой задачи?

Спасибо

1 ответ

Решение

Замечание: попробуйте задать этот вопрос в списке пользователей ffmpeg. Там вы обязательно найдете гуру ffmpeg.

Я в основном использую ffmpeg для кодирования / декодирования видео. Для декодирования "avcodec_decode_*" - это то, что нужно использовать для... декодирования. То, что вы получаете... 16 бит PCM.

Я имею в виду, что декодирование мультимедийного потока может быть сложным, а ffmpeg - библиотека довольно низкого уровня. Трудно быть более точным, используя только строку кода, которую вы даете (по крайней мере, вы должны быть более точными в своих параметрах).

Обращайте внимание на то, что при чтении мультимедийного потока сначала необходимо демультиплексировать поток (иногда даже если в вашем контейнере только один поток), а затем декодировать его с помощью правильного кодека. Если вы правильно демодулировали свой поток, правильно инициализировали свой контекст кодека / кодека, тогда вы можете вызвать avcodec_decode, и он будет работать:)

Как вы упомянули в своих тегах C++, вы можете попробовать обёртывание C++ для ffmpeg: FOBS. Использование намного проще, но, конечно, вы теряете точный контроль...

Я надеюсь, что это помогает.

Другие вопросы по тегам