Декодирование WMA с помощью FFMpeg в PCM
Вопрос
Я хочу декодировать поток WMA в 16-битный PCM.Теперь у меня вопрос относительно FFMpeg: каков выходной формат ..
len = avcodec_decode_audio2(c, (int16_t *)outbuf, &outbuf_used, inbuf_ptr, size);
это правильная функция для этой задачи?
Спасибо
Решение
Замечание:попробуйте задать этот вопрос в списке пользователей ffmpeg.Там вы наверняка найдете гуру ffmpeg.
В основном я использую ffmpeg для кодирования/декодирования видео.Для декодирования следует использовать «avcodec_decode_*» для...декодирование.То, что вы получаете, это...16 бит PCM.
Я имею в виду, что декодирование мультимедийного потока может быть сложным, а ffmpeg — это библиотека довольно низкого уровня.Трудно быть более точным, используя только ту строку кода, которую вы даете (по крайней мере, вам следует быть более точным в своих параметрах).
Вам следует быть осторожным с тем, что при чтении мультимедийного потока вам необходимо сначала демультиплексировать поток (иногда даже если в вашем контейнере только один поток), а затем декодировать его с помощью правильного кодека.Если вы правильно демультиплексировали свой поток, правильно инициализировали контекст кодека/кодека, вы можете вызвать avcodec_decode, и это будет работать :)
Поскольку вы упоминаете C++ в своих тегах, вы можете попробовать обертку C++ для ffmpeg: ФОБСИспользование намного проще, но, конечно, вы теряете точный контроль...
Я надеюсь, что это помогает.