【发布时间】:2012-01-25 12:47:54
【问题描述】:
此问题不是与Get data file from microphone in windows phone 7 或其中引用的任何其他问题的重复。
在 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 格式保存?
附:如果我从 IS 读取数据并将其打包到 SoundEffect 实例中,我可以在设备上播放它。
_soundInstance = new SoundEffect(_data, Microphone.Default.SampleRate, AudioChannels.Mono).CreateInstance();
【问题讨论】:
-
在这里您可以找到如何将原始 PCM 数据保存为 WAV 文件的代码:damianblog.com/2011/02/07/…
标签: .net windows-phone-7 format wav microphone