我在这里需要一些数学/逻辑方面的帮助。使用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。
希望如此。
非常感谢!