我正在尝试记录系统声音并将其通过tcp进行流传输,然后在另一台PC上播放,但是我的问题是我随后播放了我收到的声音,播放速度非常慢。我正在使用WasapiLoopbackCapture录制系统声音,但是当我尝试播放字节时,我录制的声音正在缓慢播放。
我该如何解决?如果我写入文件然后播放,听起来不错,但是我不能直接播放字节。
这是我用来播放声音的代码。
bufferedWaveProvider = new BufferedWaveProvider(CaptureInstance.WaveFormat);
savingWaveProvider = new SavingWaveProvider(bufferedWaveProvider, outputFilePath);
soundPlayer = new WasapiOut();
soundPlayer.Init(bufferedWaveProvider);
soundPlayer.Play();
稍后在代码中,当我通过TCP接收到缓冲区时,我将添加示例。
bufferedWaveProvider.AddSamples(bytes, 0, bytes.Length);
答案 0 :(得分:0)
您需要确保波形格式完全匹配。通常,WASAPI回送捕获将捕获44.1kHz或48kHz的立体声IEEE浮点采样。因此,on(launchEvent, (data) => {
const myComponent = new ReactComponent();
data.root = myComponent.native;
});
中的WaveFormat
应该设置为与捕获音频时完全相同的格式。
要注意的另一个问题是,您应该使用BufferedWaveProvider
事件的BytesRecorded
属性,而不是缓冲区的长度。捕获缓冲区可能并不总是完全满。
最后,原始立体声IEEE浮点采样频率为44.kHz或更高不是通过网络传输音频的非常有效的方法。可能只是您的网络无法跟上。通常,通过网络传输音频的程序将使用某种编解码器来降低带宽要求。