1

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

4

1 回答 1

1

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

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

于 2013-08-07T22:46:38.170 回答