Неправильный AVFrame nb_samples при декодировании MP3
Используя ffmpeg 3.4.4, который поставляется с моим дистрибутивом, у меня проблема с декодированием mp3 файлов. Декодер работает корректно для flac и m4a.
Я видел две проблемы, которые, по моему мнению, связаны, обе связаны с определением количества семплов в файле.
При открытии файла я использую следующую последовательность вызовов API:
avformat_open_input(...);
avformat_find_stream_info(...);
avformat_find_best_stream(...);
На данный момент AVStream
У меня, в отличие от случаев для FLAC и M4A, nb_frames
поле не равно количеству образцов. Вместо этого я должен использовать time_base
а также duration
рассчитать количество образцов.
При декодировании файла я avcodec_send_packet
а также avcodec_receive_frame
, AVFrame
который заполняется имеет неправильное значение для nb_sample
такой, что после прочтения всего файла, я заканчиваю декодировать только около 4% выборок.
Как правильно декодировать mp3 файлы с помощью ffmpeg?