为什么使用ffmpeg将比特率从124转换为96会降低我的MP3文件的持续时间?

问题描述 投票:0回答:1

我想把我的MP3文件转换到一个较低的比特率。但是从124K转换到96K后,我的文件长度从4:01减少到3:54。为什么会这样?

转换时使用的语法是.NET。

exec("ffmpeg -i com.mp3 -b:a 96k com96.mp3");

原来的持续时间是4:01,但转换后变成了3:54。是我的语法有什么问题,还是MP3文件在从高比特率转换到低比特率的过程中丢失了数据位?

php ffmpeg mp3
1个回答
1
投票

124K不是一个正常的MP3比特率。 要么你的文件使用的是自由格式的恒定比特率(非常罕见......我实际上从未见过),要么这个比特率是一些可变比特率帧的平均值。

是什么让你认为这个文件是124K和04:01的持续时间?

我怀疑的是,你有一个正常的VBR文件,不管是显示你这是使用帧的平均值,以显示你的比特率,并使用该平均值对文件大小的字节来估计持续时间。

MP3没有内置的时间戳。 它只是MPEG帧后MPEG帧,直到结束。 短短的附加元数据或将其混合到另一个容器中,唯一的方法是通过读取整个文件,或根据比特率和文件大小来估计持续时间。 随着比特率的变化,你可以预期你的持续时间是有些不准确的。

我怀疑文件中的实际音频是03:54的持续时间。

最后,我不知道你的用例是什么,但128k和96k之间的大小差异不是很大,但质量差异是。 如果你想节省带宽,有更好的编解码器(即Opus或AAC)。 此外,你不应该去从一个有损的编解码器到另一个有损的编解码器......你最终浪费带宽,试图编码伪影,损害质量甚至进一步沿途。

© www.soinside.com 2019 - 2024. All rights reserved.