[英]convert wave to byte array
我是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轉換為byte
File.ReadAllBytes("wave path");
但實際上我想直接從麥克風發送電波(不是從電波文件發送)
所以我使用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
,它將開始播放。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.