Audio 使用MediaPlugin录制音频,并使用base64-Ionic 2发送到服务器

Audio 使用MediaPlugin录制音频,并使用base64-Ionic 2发送到服务器,audio,base64,ionic2,cordova-media-plugin,Audio,Base64,Ionic2,Cordova Media Plugin,在我的离子2应用程序中。 我已经做了一个功能,记录音频和上传到服务器。我使用了MediaPlugin,它可以很好地录制,但当上传并在服务器上打开它时,文件无法收听。我认为这是因为类型。那么,如何将MediaPlugin转换为正确的base64文件进行上传 录音服务类 import { Injectable } from '@angular/core'; import { MediaPlugin } from 'ionic-native'; export enum AudioRecorderSt

在我的离子2应用程序中。 我已经做了一个功能,记录音频和上传到服务器。我使用了MediaPlugin,它可以很好地录制,但当上传并在服务器上打开它时,文件无法收听。我认为这是因为类型。那么,如何将MediaPlugin转换为正确的base64文件进行上传

录音服务类

import { Injectable } from '@angular/core';
import { MediaPlugin } from 'ionic-native';

export enum AudioRecorderState {
    Ready,
    Recording,
    Recorded
}

@Injectable()
export class AudioRecorder {
  mediaPlugin: MediaPlugin = null;
  state: AudioRecorderState = AudioRecorderState.Ready;

  getMediaPlugin(){
    return this.mediaPlugin;
  }

  preparedRecord(){
     this.mediaPlugin = new MediaPlugin('audio.mp3');
  }

  startRecording() {
    this.mediaPlugin.startRecord();
    this.state = AudioRecorderState.Recording;
  }

  stopRecording() {
    this.mediaPlugin.stopRecord();
    this.state = AudioRecorderState.Ready;
  }
}
调用startRecording和stopRecording的page类中的函数

 startRecording() {
    try {
      this.audioRecorder.preparedRecord();
      this.audioRecorder.startRecording();
    }
    catch (e) {
      this.showAlert('Failed');
    }
  }

  stopRecording() {
    try {
      this.audioRecorder.stopRecording();
      const media = this.audioRecorder.getMediaPlugin();

      this.base64Audio = "data:audio/mp3;base64," + media

      //Use base64Audio to Upload to Server...

    }
    catch (e) {
      this.showAlert('Could not stop recording.');
    }
  }

真正的问题是,
MediaPlugin
没有创建
mp3
,这只是一种外观。因此,您可以使用
wav
asd
或任何东西,
MediaPlugin
将正确播放它。然而,这个插件创建了一个扩展名为aac的文件(安卓
3gp
)。因此,您不能在服务器上播放,因为服务器认为该文件是一个
mp3
,但它不是。当我试图用html5
音频播放它时,我遇到了以下问题

我不知道你的服务器是如何工作的,但是如果你喜欢html5
音频
,那么你应该将你的文件转换成支持的扩展名(
mp3
ogg
wav
),或者你应该使用另一个插件