Определение частоты дискретизации и битовой глубины звука в зависимости от размера файла - PullRequest
0 голосов
/ 24 октября 2018

Мне нужна помощь с математикой / логикой.Работа с aif-файлами.

Я написал следующее:

        LnByte = FileLen(ToCheck)                                                   'Returns Filesize in Bytes
        LnBit = LnByte * 8                                                          'Get filesize in Bits
        Chan = 1                                                                    'Channels in audio: mono = 1
        BDpth = 24                                                                  'Bit Detph
        SRate = 48000                                                               'Sample Rate
        BRate = 1152000                                                             'Expected Bit Rate

              Time_Secs = LnBit / Chan / BDpth / SRate                              'Size in Bits / Channels / Bit Depth / Sample Rate
              FSize = (BRate / 8) * Time_Secs                                    '(Bitrate / 8) * Length of file in seconds

ToCheck - текущий файл при циклическом просмотре папки с файлами.

Итак, я нахожу длину звука в зависимости от размера файла в битах / каналах / битовой глубине / частоте дискретизации.Это предполагает, что глубина в битах и ​​частота дискретизации являются правильными (мне нужно, чтобы файлы были 24-бит / 48 кГц).

Time_Secs = Длина файла в секундах.

FSize = Размер файла, основанный на 24/48 кГц с использованием Time_Secs

Возможно, поскольку FSize использует Time_Secs, я не могувыяснить, как из этого разобраться, если частота дискретизации файла и / или глубина в битах действительно правильны ...

Предполагая, что 24 / 48k должно давать 144 000 байт в секунду

Предполагая 16/ 48k должно выдавать 96 000 байт в секунду

Если я проверяю файл с 16-битной / 48 кГц, используя приведенный выше код, он дает неправильное время в секундах (естественно), но правильный размер файла ... дажехотя битрейт равен 1 152 000, он должен быть неправильным.- Казалось бы, разница во времени компенсирует разницу в битрейте - или я смотрю на это неправильно.

Как бы я адаптировал свою формулу или сделал бы математические расчеты, есличастота дискретизации / битовая глубина файла на самом деле 48000 Гц / 24-бит?Или есть другой путь полностью?Помня, что это aif файлы, а не wavs.

Надеюсь, это имеет смысл.

Большое спасибо заранее!

...