gpt4 book ai didi

c# - 如何使用 XAudio2 以毫秒为单位寻找位置

转载 作者:太空宇宙 更新时间:2023-11-03 11:04:01 24 4
gpt4 key购买 nike

我正在为 DirectX XAudio2 api 使用 SharpDX 包装器。 http://sharpdx.org/

我需要能够将加载到 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();
}

谁能告诉我应该将 play begin 设置为什么值?

我从文档中可以看出这个值是样本编号,它可能需要是 128 的倍数,但我认为我还是做错了。

http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.submitsourcebuffer(v=vs.85).aspx

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

最佳答案

想通了,觉得自己一直在乘1000,不该乘的,下面的作品

var offset = (int)Math.Floor(buffer.WaveFormat.SampleRate * barDuration / 128) * 128 * bar;

关于c# - 如何使用 XAudio2 以毫秒为单位寻找位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16649023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com