Замечания: попробуйте задать этот вопрос в списке пользователей FFmpeg. Вы обязательно найдете там гуру ffmpeg.
В основном я использую ffmpeg для кодирования/декодирования видео. Для декодирования «avcodec_decode_ *» - это правильные вещи, которые нужно использовать для ... декодирования. Что вы получаете ... 16 бит PCM.
Что я имею в виду, так это то, что декодирование мультимедийного потока может быть сложным, а ffmpeg - это довольно низкий уровень lib. Трудно быть более точным только с строкой кода, который вы даете (по крайней мере, вы должны уточнить свои параметры).
О чем следует помнить, так это то, что при чтении мультимедийного потока вы должны сначала делить поток (иногда даже если в вашем контейнере есть только один поток), а затем декодировать его с помощью правого кодека. Если вы правильно демультиплексированные ваш поток, правильно инициализирован ваш кодек контекст/кодек, то вы можете позвонить avcodec_decode и он будет работает :)
Как вы упоминаете C++ в тегах, вы можете попробовать C++ обертывание для FFmpeg: FOBS использование намного проще, но, конечно, вы теряете точный контроль ...
Надеюсь, это поможет.