我使用SharpDX通过XAudio2播放声音,在一定范围内循环xWMA文件时遇到问题。当使用xWMA文件时,值LoopBegin和LoopLength似乎被完全忽略;它总是循环播放整个声音文件。
但是,在WAV文件中,这些值与预期的一样工作。
我已经在看书了http://msdn.microsoft.com/en-us/library/windows...er%28v=vs.85%29.aspx
但我相信我已经满足了PlayBegin、PlayLength、LoopBegin、LoopLength等值的所有标准。
关于xwma数据,我这里缺少什么具体的信息?
我使用这个函数来设置样本中的值,因为我的所有文件都有44100KhZ
static int MilliSecondsToSamples(double millis)
{
return (int) (44100.0 * millis / 1000.0);
}
我在windows 7上。NET4.0
根据本页:http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.xaudio2.xaudio2_buffer(v=vs.85).aspx
对于ADPCM,播放循环长度必须是wSamplesPerBlock的倍数。由于WMA也被压缩了,我认为可能需要保持循环长度与正在播放的WMA文件的帧大小一致。