#audio #size #wav #pcm
Вопрос:
Итак, в принципе, я думал, что формула для вычисления размера файла pcm выглядит следующим образом:
fileSize(in bits) = samples_per_sec x seconds x number_of_channels
И это сработало для меня просто отлично, так как я имел дело исключительно с файлами pcm, которые имели 8-битную глубину.
Когда я начал работать с файлами 16-битной глубины, формула не давала точных результатов.
Через некоторое гугление я обнаружил, что моя упомянутая формула была неправильной, на самом деле вы должны придерживаться этой:
fileSize(in bits) = samples_per_sec x seconds x number_of_channel x bit_depth/8
Это объясняет, почему я получал правильные результаты с неправильной формулой, так как, вы знаете, 8/8 = 1.
Чего я не понимаю, так это вот чего: зачем вам нужно делить разрядность на восемь?
Чтобы получить биты в результате ваших вычислений, вы также должны получить их в правой части вашей формулы:
bits = samples/seconds x seconds x num_of_channels(dimensionless) x bits/sample = bits
и это прекрасно. Таким образом, он должен работать без деления на восемь. Но это не так.
Где я ошибаюсь?
Комментарии:
1. под
num_of_channels(dimensionless)
этим вы подразумеваете, чтоnum_of_channels
в нем нет единиц измерения или что-то совсем другое?2. @fdcpp Да, я имею в виду, что в нем нет единиц измерения
3. прекрасно, в таком случае мой ответ остается в силе
Ответ №1:
В вашем стиле обозначения:
samples_per_sec x seconds x number_of_channels
является общее количество образцовsamples_per_sec x seconds x number_of_channel x bit_depth
является общее количество битовsamples_per_sec x seconds x number_of_channel x bit_depth / 8
является общим количеством байтовsamples/seconds x seconds x num_of_channels(dimensionless) x bits/sample
естьsample_rate x duration_in_seconds x num_of_channels x bit_depth
, что опять же является общим количеством битов
Основная путаница, скорее всего, связана с битами и байтами. Размер выборки аудио обычно описывается в разрядности, а не в байтах. Размер файла / память обычно описывается в байтах. Чтобы перейти от битов к байтам, вы просто делите их на 8.
Комментарии:
1. Очевидно, что все методы моего скрипта, которые имеют дело с размерами файлов, выводят их в байтах, вот почему это сработало для меня. Большое спасибо