2016-11-05 93 views
0

我试图做一个简单的影音播放器,并在某些情况下,我得到如下正确的值: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