Вопрос

Я хочу декодировать поток 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: ФОБСИспользование намного проще, но, конечно, вы теряете точный контроль...

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top