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))}});
}

0 ответов

Другие вопросы по тегам