Неправильный 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?

0 ответов

Другие вопросы по тегам