0

我在这里需要一些数学/逻辑方面的帮助。使用 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 位/48kHz)。

Time_Secs = 文件的长度(以秒为单位)。

FSize = 使用 Time_Secs 基于 24/48kHz 的文件大小

可能是因为 FSize 使用 Time_Secs,我不知道如何从中确定文件采样率和/或位深度是否确实正确......

假设 24/48k 应该每秒提供 144,000 字节

假设 16/48k 应该每秒提供 96,000 字节

如果我使用上面的代码检查一个 16 位/48 kHz 的文件,它会给出不正确的以秒为单位的时间(自然),但正确的文件大小......即使比特率为 1,152,000 也应该是错误的。- 似乎时间差异正在弥补比特率的差异 - 或者我看错了。

如果文件的采样率/位深度实际上是 48,000 Hz/24 位,我将如何调整我的公式,或者进行数学计算?还是有完全不同的方式?记住它们是 aif 文件,而不是 wavs。

希望这是有道理的。

提前谢谢了!

4

0 回答 0