将波转换为字节数组
本文关键字:字节数 数组 字节 转换 | 更新日期: 2023-09-27 18:15:48
我是c#新手,我想通过ip发送语音,但我在这里有一个问题。
private Byte[] arr;
private void send()
{
arr = File.ReadAllBytes("wave path");
con = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// ...
con.Send(arr, 0, arr.length, 0);
con.Close();
}
现在可以通过
将wave转换为字节了File.ReadAllBytes("wave path");
但实际上我想直接从麦克风发送wave(而不是从wave文件)
我使用NAudio.dll
记录音频这是代码
private void button2_Click(object sender, EventArgs e)
{
int devicenum = 0;
sourcestream = new NAudio.Wave.WaveIn();
sourcestream.DeviceNumber = devicenum;
sourcestream.WaveFormat = new NAudio.Wave.WaveFormat(4410, NAudio.Wave.WaveIn.GetCapabilities(devicenum).Channels);
NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourcestream);
waveOut = new NAudio.Wave.DirectSoundOut();
waveOut.Init(waveIn);
sourcestream.StartRecording();
waveOut.Play();
}
,我测试它从麦克风播放音频
我如何将waveOut
转换为数组字节,以便我可以发送它
waveOut.Play();
我发现一些视频写入音频到波文件,并再次从文件中读取字节。任何方法转换音频直接到数组字节?
用BufferedWaveProvider
初始化WaveOut
实例。这将允许您通过将它们写入BufferedWaveProvider
来添加要播放的样本块,如下所示:
waveOut = new WaveOut())
var provider = new BufferedWaveProvider(waveFormat);
waveOut.Init(provider);
waveOut.Play();
provider.AddSamples(sampleBuffer, 0, sampleBuffer.Length);
因此,在您的网络接收器代码中,从远程发送者获取样本,您将缓冲区(解码后,当然)添加到BufferedWaveProvider
中,它将播放。