繁体   English   中英

如何在不实际转换的情况下确定转换后音频文件的理论文件大小(即 mp3 到 wav)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM