Gstreamer-持续时间查询错误在mp3上

时间:2016-03-17 23:10:03

标签: c mp3 gstreamer

我正在使用Gstreamer在C上创建一个简单的应用程序,它涉及播放一首歌并在终端上显示有关它的一些信息。这些信息包括歌曲的总长度(以秒为单位)。像往常一样,我使用函数gst_element_query_duration来获取这些数据。问题是,当我运行我的程序时,有时它会在屏幕上显示正确的时间,但之后我再次运行它,显示的总时间减少了大约6秒。因为只是一个简单的试用应用程序,我使用 playbin 作为复制的常规bin,所以我尝试使用不同的文件扩展名,这似乎只发生在mp3文件中。有没有人经历过这个?关于如何修复它的任何想法?

1 个答案:

答案 0 :(得分:0)

MP3的问题是文件中没有存储持续时间(通常)。使用恒定比特率文件,您只需检查比特率和文件大小,但对于可变比特率文件,您只能基于此进行近似。你的问题可能正是如此。

知道可变比特率MP3文件的准确持续时间的唯一方法是没有包含持续时间的标题信息(参见Xing标题)是解析文件直到结束并计算确切的持续时间。使用playbin,您应该在文件末尾获得准确的持续时间。