0
這個問題是不是重複的Get data file from microphone in windows phone 7或任何其他引用它。從Windows Phone麥克風獲取wav文件
Windows Phone中,我以下面的方式記錄麥克風數據:
- 我開始Dispatcher.Update定時器,模擬XNA遊戲循環。
我訂閱了Microphone.BufferReady並設置了緩衝區持續時間。然後,我啓動麥克風。
// Event handler for getting audio data when the buffer is full _microphone.BufferReady += MicrophoneBufferReady; // Get audio data in 1/2 second chunks _microphone.BufferDuration = TimeSpan.FromMilliseconds(100);
然後,每次我得到的音頻數據塊從一個麥克風,我把它記錄到的數據流。
// Retrieve audio data _microphone.GetData(_buffer); _stream.Write(_buffer, 0, _buffer.Length);
無論何時錄製結束,數據流將作爲文件保存到隔離存儲器。
var soundFileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".wav"; using (var isStore = IsolatedStorageFile.GetUserStoreForApplication()) { using (var isfStream = new IsolatedStorageFileStream(soundFileName, FileMode.Create, isStore)) { isfStream.Write(data.ToArray(), 0, data.ToArray().Length); isfStream.Close(); } }
凡
data
是MemoryStream
拿着所有的麥克風緩衝區,記錄過程中收集的。
問題是,實際保存的文件不是wav文件。如果我使用ISETool將其複製到桌面,我無法播放聲音。
如何將麥克風錄製文件保存爲文件,以便將其保存爲.wav格式?
P.S.如果我從IS讀取數據並將其打包到SoundEffect實例中,我可以在設備上播放它。
_soundInstance = new SoundEffect(_data, Microphone.Default.SampleRate, AudioChannels.Mono).CreateInstance();
在這裏你可以找到的代碼如何保存原始的PCM數據作爲WAV文件:http://damianblog.com/2011/02/07/storing-wp7-recorded-audio-as-wav-format-streams/ – Roboblob 2012-02-16 21:22:29