我正在使用DirectX XAudio2 API的SharpDX包裝。 http://sharpdx.org/如何使用XAudio2尋找以毫秒爲單位的位置
我需要能夠找到加載到SourceVoice中的WAV文件到軌道中的給定位置。我正在努力解決我應該設置PlayBegin以便跳過一定數量的毫秒或比例數量的軌道。
public void onMetronome(int bar)
{
if (voice != null) voice.DestroyVoice();
voice = new SourceVoice(Player.XAudio, buffer.WaveFormat, true);
buffer.PlayBegin = (int)(bar * buffer.Stream.Length/4);
voice.SubmitSourceBuffer(buffer, buffer.DecodedPacketsInfo);
voice.Start();
}
任何人都可以告訴我什麼樣的價值我應該設置播放開始?
我可以從文檔中看到這個值是樣本編號,它可能需要是128的倍數,但認爲我仍然在做錯事。
是什麼讓你認爲你正在做的事情錯了?我懷疑你需要考慮採樣率 - 所以offset = seconds x samplesPerSecond x bytesPerSample,可能捨入爲128的倍數 – Floris