如何在pydub中实现输入输出文件相同的比特率?

4 投票
2 回答
6204 浏览
提问于 2025-05-10 10:00

我用pydub这个工具把一个文件处理成了短一点的文件,一切都很好,但比特率从256k变成了124k(我为什么会得到这个数字而不是128k呢?)。我知道AudioSegment有一个参数可以设置比特率,但我每次都想要相同的比特率,不想每次手动设置。有办法解决这个问题吗?

相关文章:

  • 暂无相关问题
暂无标签

2 个回答

3

我无法使用上面提到的 mediainfo 对象。后来我找到了一种计算WAV文件比特率的方法,具体可以在这里查看。

把这个方法转成Python和pydub的代码,假设你用的pydub对象叫 wav,你可以这样计算比特率: bitrate = str((wav.frame_rate * wav.frame_width * 8 * wav.channels) / 1000)

然后你可以把这个比特率传递给导出功能,而不需要手动设置。希望这对你有帮助 :)

13

这主要是和ffmpeg/avlib有关,不过你可以给AudioSegment().export()方法传一个参数,来指定你想要的比特率:

from pydub import AudioSegment
from pydub.utils import mediainfo

source_file = "/path/to/sound.mp3"

original_bitrate = mediainfo(source_file)['bit_rate']
sound = AudioSegment.from_mp3(source_file)

sound.export("/path/to/output.mp3", format="mp3", bitrate=original_bitrate)

撰写回答