我正在从FMOD迁移到OpenAL,我找不到FSOUND_Sample_GetLength()函数的模拟,它返回样本中的样本长度(它不考虑频率)...我得到OpenAL缓冲区名称来自alutLoadMemoryFromFileImage(),所以我无法以这种方式得到波形数据.
请帮忙!
Kar*_*arl 11
你需要使用alGetBufferi()将它拼凑在一起:
ALint sizeInBytes;
ALint channels;
ALint bits;
alGetBufferi(bufferID, AL_SIZE, &sizeInBytes);
alGetBufferi(bufferID, AL_CHANNELS, &channels);
alGetBufferi(bufferID, AL_BITS, &bits);
lengthInSamples = sizeInBytes * 8 / (channels * bits);
Run Code Online (Sandbox Code Playgroud)
并持续几秒钟:
ALint frequency;
alGetBufferi(bufferID, AL_FREQUENCY, &frequency);
durationInSeconds = (float)lengthInSamples / (float)frequency;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2423 次 |
| 最近记录: |