gpt4 book ai didi

ffmpeg - 如何在服务器端获取 MP3 文件(VBR 或 CBR)的真实持续时间

转载 作者:行者123 更新时间:2023-12-03 11:38:54 25 4
gpt4 key购买 nike

我曾经使用 ffmpeg 在服务器端计算 MP3 文件的持续时间 - 这似乎工作正常。今天我发现有些计算是错误的。不知何故,由于某种原因,ffmpeg 会错误计算持续时间,而且它似乎只发生在可变比特率 mp3 文件中。

在本地测试时,我注意到 ffmpeg 以绿色打印了两行额外的行。

使用的命令:

ffmpeg -i song_9747c077aef8.mp3

ffmpeg 说:
[mp3 @ 0x102052600] max_analyze_duration 5000000 reached at 5015510
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate

在一个不错的、温暖的谷歌 session 之后,我发现了一些关于此的帖子,但没有找到解决方案。

然后我尝试增加最大持续时间:
ffmpeg -analyzeduration 999999999 -i song_9747c077aef8.mp3

在此之后,ffmpeg 只返回了第二行:
[mp3 @ 0x102052600] Estimating duration from bitrate, this may be inaccurate

但无论哪种情况,计算出的持续时间都是完全错误的。将其与 VLC 进行比较,我注意到持续时间是正确的。

经过更多研究后,我偶然发现了 mp3info - 我安装并使用了它。
mp3info -p "%S" song_9747c077aef8.mp3

mp3info 然后返回 正确 持续时间,但只能作为一个整数,我不能使用它,因为我需要一个更准确的数字。用户 blahdiblah 在下面的评论中解释了其原因 - mp3info 只是从文件中提取 ID3 信息而不实际执行任何计算。

我也尝试使用 mplayer 来检索持续时间,但就像 ffmpeg 一样,mplayer 返回错误的值。

最佳答案

我终于找到了使用 sox 解决这个问题的正确方法——它返回了正确的信息。

sox file.mp3 -n stat
Samples read: 19321344
Length (seconds): 219.062857
Scaled by: 2147483647.0
Maximum amplitude: 1.000000
Minimum amplitude: -1.000000
Midline amplitude: -0.000000
Mean norm: 0.141787
Mean amplitude: 0.000060
RMS amplitude: 0.191376
Maximum delta: 0.947598
Minimum delta: 0.000000
Mean delta: 0.086211
RMS delta: 0.115971
Rough frequency: 4253
Volume adjustment: 1.000

长度(秒):219.062857

关于ffmpeg - 如何在服务器端获取 MP3 文件(VBR 或 CBR)的真实持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10437750/

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