帮助文件与示例
https://github.com/naudio/NAudio
DEMO文件,源代码
https://markheath.net/category/naudio
waveout与waveoutevent区别;触发事件的方式不同:一个是回调式,一个是事件触发式(推荐使用后者代替老方式)
读取wav文件 WaveFileReader
读取mp3文件 mp3FileReader
读取其它文件 AudioFileReader
写入文件 WaveFileWriter
播放文件
Dim fr As New WaveFileReader("d:\test.wav")
Dim out As WaveOut
out.Init(fr)
out.Play()
播放音频数据
Dim Buff(45000) As Byte
Dim wavStream As New RawSourceWaveStream(Buff, 0, 45000, New WaveFormat(16000, 16, 1))
out.Init(wavStream)
out.Play()
数据的转换
Buffer.BlockCopy()
获取语音数据
Dim fr As New WaveFileReader("d:\test.wav")
fr.Read(Buff,0,100)
录音
Dim wav As New WaveInEvent
AddHandler wav.DataAvailable, AddressOf waveIn_DataAvailable
wav.StartRecording()
Private Sub waveIn_DataAvailable(sender As Object, e As WaveInEventArgs)
EndSub
设置缓冲区大小
wav.BufferMilliseconds = 200 '缓冲区大小= 频率*BufferMilliseconds*字节/1000 ; 如16000*200*2=6400 ;8000*1*20=1600 200 = 6400;100 = 3200
wav.NumberOfBuffers = 6 '原12 减少缓冲区数量,使用录音不中断
wav.WaveFormat = New WaveFormat(16000, 16, 1) '格式 16000
’数据结构的转换,byte 到 十六位,32位,24位
WaveBuffer
'绘图
使用