Декодировать 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. Использование намного проще, но, конечно, вы теряете точный контроль...
Я надеюсь, что это помогает.