最近在做android與C#錄音並互相通信的小東西。但是卡在C#錄音這兒了。找了好久,說的都是DirectX,可是我總是安裝不上,這才找到了這個簡單的錄音方法。當然,如果你想要錄得好並且處理音頻,那還是用用DirectX吧!原文:http://www.cnblogs.com/zrx401558287/archive/2008/11/28/1343160.html
using System.Runtime.InteropServices;
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
);
private void button1_Click(object sender, EventArgs e)
{
mciSendString("set wave bitpersample 8", "", 0, 0);
mciSendString("set wave samplespersec 20000", "", 0, 0);
mciSendString("set wave channels 2", "", 0, 0);
mciSendString("set wave format tag pcm", "", 0, 0);
mciSendString("open new type WAVEAudio alias movie", "", 0, 0);
mciSendString("record movie", "", 0, 0);
}
private void button2_Click(object sender, EventArgs e)
{
mciSendString("stop movie", "", 0, 0);
mciSendString("save movie 1.wav", "", 0, 0);
mciSendString("close movie", "", 0, 0);
}
button1是開始錄音,button2是結束錄音。你當然也可以通過邏輯判斷來只使用一個button。
錄音文件保存到了該項目下bin/Debug目錄下了。文件名是1.wav。所以你可以在這里改成你自己的文件名
mciSendString("save movie "+yourfilename, "", 0, 0);
很簡單吧?
下面是放音。
放音我使用的是WindowsMediaPlayer這個組件:

我將它設為不可見,自己用按鍵控制它的播放與暫停。
private void button1_Click(object sender, EventArgs e)
{
if(!playing)
{
playing = true;
button1.Text = "停止";
this.axWindowsMediaPlayer1.URL ="your voice file name";
axWindowsMediaPlayer1.Ctlcontrols.play();
}
else
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
playing=false;
button1.Text="播放";
}
}
也就是通過URL屬性設置播放的文件。
那如果它自己播放結束了怎么辦呢?
當然就需要事件啦!
private void axWindowsMediaPlayer1_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsStopped)
{
if (playing)
{
playing = false;
button1.Text = "播放";
}
if (playing_my)
{
playing_my = false;
btn_playmy.Text = "播放我的";
}
}
}
這兩個強大的工具讓我們完成了簡單的開發!
