2016-11-05 7 views
0

Я пытаюсь сделать простой AV-плеер, а в некоторых случаях я получаю значение правильно, как показано ниже:libav дает аудио длительности как отрицательный

checking /media/timecapsule/Music/02 Baawre.mp3 
[mp3 @ 0x7f0698005660] Skipping 0 bytes of junk at 2102699. 
dur is 4396400640 
duration is 311 

Однако в других местах, я получаю отрицательные длительности:

checking /media/timecapsule/Music/01 Just Chill.mp3 
[mp3 @ 0x7f0694005f20] Skipping 0 bytes of junk at 1318922. 
dur is -9223372036854775808 
duration is -653583619391 

Я не уверен, что приводит к тому, что продолжительность будет отрицательной только в некоторых аудиофайлах. Любые идеи, где я могу ошибаться, приветствуются!

Исходный код здесь https://github.com/heroic/musika/blob/master/player/library.c

ответ

0

Я хотел бы предложить две вещи: 1. Убедитесь в том, что не удалось файлы не повреждены, то вы можете использовать FFmpeg инструмент командной строки, чтобы сбросить данные. 2. Разбейте это на 2, если условия, чтобы избежать порядка работы и обеспечить, чтобы открытое было выполнено. если (! (Avformat_open_input (& контейнер, имя, NULL, NULL) & avformat_find_stream_info (контейнера, NULL) < 0)) {

Также вы можете использовать av_dump_format, чтобы убедиться, что это заголовки правильно. Смотрите экс - https://www.ffmpeg.org/doxygen/2.8/avio_reading_8c-example.html#a24

Кетан

+0

Прелесть в том, что если я использую mpg123, нет никаких проблем с какой-либо из этих файлов! – Amit

 Смежные вопросы

  • Нет связанных вопросов^_^