Этот вопрос не дубликат Get data file from microphone in windows phone 7 или любые другие ссылки в нем.Получение wav-файла из Windows Телефонный микрофон
В 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