WAV-файл работает на проигрывателе VLC, но не на проигрывателе Windows Media
Я создал мобильное приложение в Ionic2 с помощью плагина cordova-plugin-audioinput
и успешно записал мой голос с телефоном Android, закодированным в audio/wav
формат. Аудио строка имеет data:audio/wav;base64
как заголовок После завершения http
отправить запрос на отправку этой звуковой строки node.js REST
конечная точка Данные аудио строки были успешно получены в конечной точке сервера.
Конечная точка сервера node.js преобразовала эту звуковую строку обратно в двоичные данные и с помощью потока файлов узла записала в файл на диске. Когда я пытаюсь воспроизвести этот файл на диске в Windows Media Player, он выдает ошибку. Но VLC player работает все нормально. Моим бизнес-требованием является запуск этого файла на Windows Media Player. Где я делаю не так?
Ionic 2 соответствующий код:
declare var audioinput : any;
let captureCfg = {
sampleRate: audioinput.SAMPLERATE.CD_AUDIO_44100Hz,
bufferSize: 16384,
channels: audioinput.CHANNELS.MONO,
format: audioinput.FORMAT.PCM_16BIT,
normalize: true,
normalizationFactor: 32767.0,
streamToWebAudio: false,
audioContext: null,
concatenateMaxChunks: 50,
audioSourceType: audioinput.AUDIOSOURCE_TYPE.DEFAULT
};
var encoder = new WavAudioEncoder(this.captureCfg.sampleRate, this.captureCfg.channels, this.captureCfg.format)
encoder.encode([this.audioDataBuffer]);
let blob = encoder.finish("audio/wav");
let reader = new FileReader();
let audio : any = {};
reader.onload = (evt : any) => {
this.htmlAudioSource = evt.target.result;
audio.src = evt.target.result;
audio.type = "audio/wav";
this
.appService
.httpPost('Nodejs url', audio);
this.audioDataBuffer = [];
};
reader.readAsDataURL(blob);
Node.js Соответствующий код на стороне сервера:
let data1 = req.body;
let dataArray = data.split(',');
if(dataArray.length > 1){
let data3 = dataArray[1];
data3 = new Buffer(data3, 'base64');
fs.writeFile("c:\\temp\\testBinary.wav",data3,"utf8",(err)=>{if(err){return(console.log(err))}});
}