C# 录音功能实现
引用 第三方库
WaveLib.IWaveControl wave;
wave = new WaveLib.Wave();
wave.ErrorEvent += new WaveLib.ErrorEventHandle(wave_ErrorEvent);
wave.RecordQuality = WaveLib.Quality.Height;
录音按钮点击函数
private void btnrecord_Click(object sender, EventArgs e)
{
string path = "recordes";
if (!Directory.Exists(path)) //创建文件夹
{
Directory.CreateDirectory(path);
}
string strnow = DateTime.Now.ToString("yyyyMMdd-hh-mm-ss"); //系统时间命名录音文件
recodpath = "recordes\\"+strnow+".wav";
wave.SavedFile = recodpath;
wave.Start();
timer1.Start(); //录音记时
}
录音停止按钮
private void btnstop_Click(object sender, EventArgs e)
{
wave.Stop();
timer1.Stop();
AddVoiceToListBox("Server", wave.SavedFile, true); //把录音文件路径添加到声音列表
}
播放功能实现
在VS工具箱空白处右键,添加
会在工具箱中出现,windowMediaplayer 控件
播放按钮实现函数
private void btnPlay_Click(object sender, EventArgs e)
{
// this.axWindowsMediaPlayer1.URL = "D:\\Android\\huaxiang.mp3"; //测试
string temp = voiceLB.SelectedItem.ToString(); //从listbox 中选择要播放文件路径
string path = temp.Substring(temp.IndexOf("##$$") + 4); //获得地址
this.axWindowsMediaPlayer1.URL = path;
this.axWindowsMediaPlayer1.Ctlcontrols.play(); //播放
}
在线程中操作控件,本程序中label, ListBox
方法使用委托
private delegate void ShowGetvoice(bool falg);
private void UpdateLabel(bool flag)
{
if (InvokeRequired)
Invoke(new ShowGetvoice(UpdateLabel), flag);
else
{
if (flag)
label3.Text = "接收保存成功!!";
}
}
private delegate void DaddVoiceToListBox(string name, string path, bool flag);
private void AddVoiceToListBox(string name, string path, bool flag)
{
if (InvokeRequired)
Invoke(new DaddVoiceToListBox(AddVoiceToListBox), name, path, flag);
else
{
if (flag)
{
voiceLB.Items.Add(name + "##$$" + path);
}
}
}
使用法:在线程中直接使用函数,和普通函数一样