[英]How to determine theoretical filesize of converted audio file without actually converting (i.e. mp3 to wav)
背景:我正在编写一个 python 脚本,该脚本将接收音频文件并使用 pydub 对其进行修改。 Pydub 似乎需要将音频输入转换为 wav 格式,它有 4GB 的限制。 所以我把一个 400MB.m4a 的文件放到 pydub 中,得到一个文件太大的错误。
我不想让 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.