Как определить теоретический размер файла преобразованного аудиофайла без фактического преобразования (например, mp3 в wav)

Предыстория: я пишу скрипт на Python, который будет принимать аудиофайл и изменять его с помощью pydub. Pydub, похоже, требует преобразования аудиовхода в формат wav, который имеет ограничение в 4 ГБ. Поэтому я помещаю файл .m4a размером 400 МБ в pydub и получаю сообщение об ошибке, что файл слишком велик.

Вместо того, чтобы запускать pydub в течение пары минут, а затем выдавать ошибку, если преобразованный размер распакованного файла слишком велик, я хотел бы заранее быстро рассчитать, каким будет распакованный размер файла. Если более 4 ГБ, мой скрипт обрежет исходный звук, а затем запустит pydub.

Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
1 261
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Размер теоретического файла .WAV можно вычислить с помощью простой арифметики. Размер в байтах — это битовая глубина, деленная на 8, умноженная на частоту дискретизации, умноженная на продолжительность и умноженная на количество каналов.

Итак, если у вас есть аудиоклип продолжительностью 3:20, 44 100 Гц, 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, с битрейтом 128 кбит/с (килобит в секунду, 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

Я думаю, что неправильно назвал свой вопрос, я должен был больше использовать слово «преобразованный». Если у меня есть сжатый файл mp3/m4a, и мне нужен теоретический размер файла, если я преобразовал его в распакованный файл .wav, как я могу найти этот теоретический размер?Поправьте меня, если я ошибаюсь, но я предполагаю, что это даст мне размер исходного файла mp3/m4a?

John G. 10.12.2020 19:22

Я не уверен, в чем заключается ваше замешательство, поскольку этот ответ является теоретическим размером файла .WAV. Вычислить теоретический размер сжатого аудио намного сложнее, если это переменная скорость передачи, но если это фиксированная скорость передачи, это намного проще, поскольку вы просто умножаете скорость передачи на продолжительность. Ни одна из упомянутых мной переменных — частота дискретизации, разрядность, продолжительность и количество каналов — не имеет ничего общего со сжатым звуком. Это все самые основные свойства любого цифрового звука PCM.

Random Davis 10.12.2020 19:23

Если так, то классно. Спасибо. надо будет вечером проверить

John G. 10.12.2020 19:25

@Джон Г. не забудьте принять этот ответ, если он сработал для вас.

Random Davis 14.12.2020 20:10

Другие вопросы по теме