簡體   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