コンソールのオーディオに基づいてC#の記録オーディオ

1。

インストール・パッケージをnaudio -v 1.9.0

2。

NAudio.Waveを使用しました。

3。

 パブリック クラスNAudioHelper 
    {         
        公共WaveInEvent mWavIn。
        公共WaveFileWriter mWavWriter。

        パブリック ブール IsStoppedRecording { 取得しますセット ; } = ///  <要約> 
        /// 記録を開始
         ///  </要約> 
        ///  <PARAM NAME = "filePathに"> </ PARAM> 
        公共 ボイド StartRecord(文字列filePathに)
        { 
            mWavIn = 新しいWaveInEvent()。
            mWavIn.DataAvailable+ = MWavIn_DataAvailable。           
            mWavWriter = 新しいWaveFileWriter(filePathに、mWavIn.WaveFormat)。
            mWavIn.StartRecording(); 

            ConsoleKeyInfo CKI = Console.ReadKey()。            
            一方、(cki.Key == ConsoleKey.Escape)
            { 
                // Environment.Exit(0)。
                StopRecord(); 
                IsStoppedRecording = ;
                もし(IsStoppedRecording)
                { 
                    Console.ForegroundColor = ConsoleColor.Red。
                    Console.WriteLineを(" 録画を停止!" );
                    休憩; 
                } 
            }             
        } 

        ///  <要約> 
        /// ストップ記録
         ///  </要約> 
        公共 ボイドStopRecord()
        { 
            mWavIn.StopRecording()。
            mWavIn.Dispose()。
            mWavIn = nullを
            mWavWriter。閉じる(); 
            mWavWriter = nullを; 
        }       

        プライベート ボイド MWavIn_DataAvailable(オブジェクト送信者、WaveInEventArgs E)
        { 
            mWavWriter.Write(e.Buffer、0 、e.BytesRecorded)。
            INT secondsRecorded =(INT)mWavWriter.Length / mWavWriter.WaveFormat.AverageBytesPerSecond。
        } 
    } 


静的 ボイドメイン(文字列[]引数)
        { 
            NAudioDemo()。      
        } 
         
        静的 ボイドNAudioDemo()
        { 
            NAudioHelper recordHelper =新しいNAudioHelper(); 
            Console.ForegroundColor = ConsoleColor.Green。
            Console.WriteLineを(" 準備完了!" ); 
            Console.WriteLineを(録音を開始するキーを入力してください!); 
            ConsoleKeyInfo情報 = Console.ReadKey(真の);  

            BOOL isStarted = ;
            しばらく(info.Key == ConsoleKey.Enter)
            { 
                場合(!isStarted)
                { 
                    文字列 recordedFileName = DateTime.Now.ToString("yyyyMMddHHmmssffff ")+ " .MP3 " ; 
                    Console.WriteLineを(" スタート記録... " ); 
                    Console.WriteLineを(" を押して、エスケープ(ESC)キーを押して終了します:\ n " ); 
                    recordHelper.StartRecord(recordedFileNameを);                     
                    isStartedを = ; 
                }                 
            }            
        }     

 

おすすめ

転載: www.cnblogs.com/Fred1987/p/11891464.html