如何在 pydub 中获得相同的输入和输出文件比特率?
Posted
技术标签:
【中文标题】如何在 pydub 中获得相同的输入和输出文件比特率?【英文标题】:How can I get the same bitrate of input and output file in pydub? 【发布时间】:2015-11-17 01:38:04 【问题描述】:我用 pydub 输出了一个文件(把文件切成更短的文件),一切都很好,但是比特率从 256k 变成了 124k(为什么我会得到这个数字而不是 128k?)。我知道 Audiosegment 有一个设置比特率的参数,但我只想要相同的比特率,而不是每次手动设置。有什么办法可以解决这个问题?
【问题讨论】:
@Jiaaro 你能帮我解决这个问题吗?谢谢~ 【参考方案1】:这主要与 ffmpeg/avlib 有关,但您可以将标志传递给 AudioSegment().export()
method 以指定您想要的比特率:
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)
【讨论】:
我知道你提供的api可以导出你想要的比特率,但是如果我不知道输入文件的比特率,我不知道我应该给出什么比特率。我只希望输入和输出文件的比特率相同,而不是给它一个特定的值。【参考方案2】:我无法通过mediainfo
对象使用上面的示例。我刚刚找到了计算 WAV 文件比特率的方法here 并使用了它。
将它翻译成 python 和 pydub,并假设 pydub 对象被称为 wav
你会得到:
bitrate = str((wav.frame_rate * wav.frame_width * 8 * wav.channels) / 1000)
然后您可以将其传递给导出功能,而无需手动设置。希望对你有帮助:)
【讨论】:
以上是关于如何在 pydub 中获得相同的输入和输出文件比特率?的主要内容,如果未能解决你的问题,请参考以下文章