gpt4 book ai didi

c - 如何快速获得任何音频文件的准确持续时间?

转载 作者:行者123 更新时间:2023-12-04 15:33:13 25 4
gpt4 key购买 nike

有许多使用 VBR 编码的音频文件没有准确的持续时间标签,命令行 FFMpeg 将输出以下内容:

Estimating duration from bitrate, this may be inaccurate

(确实如此)

使用 libav , 我们可以看到这是用 has_duration() 测试的来自 libavformat/utils.c 的函数

我有一个音频播放器需要使用 libav 获取准确的持续时间信息.我已经尝试完全解码文件并计算解码样本的总数,这是通常的建议(并且是准确的),但是对于 60 分钟的音频文件,这可能需要 10 多秒,这是 Not Acceptable 。

我注意到有一些闭源音频解码器和音乐播放应用程序可以立即获得这些文件的准确持续时间。必须有一些廉价的方法来确定准确的持续时间吗?也许一个片段或高级描述可以帮助我。

最佳答案

可以非常快速地“解复用”轨道并检查每个数据包的持续时间以确定轨道的总持续时间,不需要解码。

简单地在循环中添加持续时间直到到达 EOF:

int read = av_read_frame(pFormatCtx, packet);
durationSeconds = packet->duration * (double) timebase;

关于c - 如何快速获得任何音频文件的准确持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60660228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com