【问题标题】:libav gives audio duration as negativelibav 将音频持续时间设为负数
【发布时间】:2017-03-19 04:30:00
【问题描述】:

我正在尝试制作一个简单的 av 播放器,在某些情况下我可以正确获取如下值:

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

【问题讨论】:

    标签: gcc ffmpeg libavcodec libav libavformat


    【解决方案1】:

    我建议两件事: 1. 确保失败的文件没有损坏,即您可以使用 ffmpeg 命令行工具转储详细信息。 2. 把这个分成2个if条件来避免操作顺序,确保打开成功。 if(!(avformat_open_input(&container, name, NULL, NULL)

    您还可以使用 av_dump_format 来确保其标头正确。见前 - https://www.ffmpeg.org/doxygen/2.8/avio_reading_8c-example.html#a24

    科坦

    【讨论】:

    • 美妙的是,如果我使用 mpg123,这些文件都没有问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多