簡體   English   中英

如何使用C#/ WPF錄制音頻?

[英]How do I record audio with C#/WPF?

我有一個應用程序,我想添加直接從某種麥克風設備導入小音頻片段的功能。

我已經允許導入圖片了,這對於磁盤文件和攝像頭來說還可以,因為當你附加它們時,攝像機會神奇地變成磁盤設備,所以文件導入方法適用於兩者。

但音頻略有不同。 我已經允許從磁盤導入音頻文件,但我想添加從麥克風直接錄制到磁盤文件或內存緩沖區的功能。

C#/ WPF提供了一種簡單的方法嗎? 添加此功能的好方法是什么?

可能最簡單的方法是使用mciSendString函數:

public class Program
{
    [DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
    private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);

    static void Main(string[] args)
    {
        mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
        mciSendString("record recsound", "", 0, 0);
        Console.WriteLine("recording, press Enter to stop and save ...");
        Console.ReadLine();

        mciSendString("save recsound c:\\work\\result.wav", "", 0, 0);
        mciSendString("close recsound ", "", 0, 0);
    }
}

另一個選擇是使用DirectShowNet庫(有一個名為PlayCap示例 )。

您可能還會發現此CodeProject文章很有用。

這可能有所幫助。 它將使用開源NAuodio項目......

http://channel9.msdn.com/coding4fun/articles/NET-Voice-Recorder

:)

我正在使用這個庫: http//www.codeproject.com/KB/cs/Streaming_wave_audio.aspx主要是由於簡單的api。 但我不太喜歡這段代碼。 例如,它將內存緩沖區長時間修復,而不是分配非托管緩沖區。

mciSendString函數僅記錄麥克風聲音。 如果沒有連接麥克風,它將不記錄任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM