使用XAudio2循环播放xWMA

时间:2013-07-11 21:01:19

标签: c# .net directx sharpdx xaudio2

我正在使用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

1 个答案:

答案 0 :(得分:1)

根据此页面: http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.xaudio2.xaudio2_buffer(v=vs.85).aspx

对于ADPCM,播放循环长度必须是wSamplesPerBlock的倍数。由于WMA也被压缩,我认为可能需要保持循环长度与正在播放的wma文件的帧大小一致。