背景:我正在编写一个python脚本,它将接收音频文件并使用pydub对其进行修改。Pydub似乎需要将音频输入转换为wav格式,该格式有4GB的限制。因此,我在pydub中放入了一个400MB .m4a文件,并收到一个错误消息,该文件太大。
我不想让pydub运行几分钟,而是在转换后的解压缩大小太大时引发错误,我想提前提前计算出解压缩后的文件大小。如果超过4GB,我的脚本将切碎原始音频,然后通过pydub运行。
谢谢。
计算理论上.WAV文件的大小是一种简单的算法。大小以字节为单位,是位深度除以8,乘以采样率,乘以持续时间,乘以通道数。
因此,如果您有一个3:20长,44100Hz,16位和立体声的音频剪辑,则计算将为:
sample_rate = 44100 # Hz/Samples per second - CD Quality
bit_depth = 16 # 2 bytes; CD quality
channels = 2 # stereo
duration = 200.0 # seconds
file_size = sample_rate * (bit_depth / 8) * channels * duration
# = 44100 * (2) * 2 * 200
# = 35280000 bytes
# = 35.28 MB (megabytes)
我找到了这个在线音频文件大小计算器,您还可以使用它来确认数学:https : //www.colincrawley.com/audio-file-size-calculator/
相反,如果您想找出另一个方向,即理论上压缩文件的大小,则取决于您进行压缩的方式。幸运的是,典型的压缩仅使用固定的比特率,这意味着计算出最终压缩文件大小的数学方法非常简单。
因此,如果您有3:20的音频片段要转换为MP3,且比特率为128kbps(每秒千比特,常见的中档质量设置为128),则计算结果将是比特率除以8(位/字节)乘以持续时间:
bits_per_kb = 1000
bitrate_kbps = 128
bits_per_byte = 8
duration_seconds = 200
filesize_bytes = (bitrate_kbps * bits_per_kb / bits_per_byte) * duration_seconds
# = (128000 / 8) * 200
# = (16) * 200
# = 3200000 bytes
# = 3.2 MB
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句