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



在我的 Ionic 2 应用程序中。我制作了一个录制音频并上传到服务器的功能。我使用过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() {
    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,这只是一种外观。所以你可以使用 wavasd或任何东西,MediaPlugin会正确播放。但是,此插件会创建一个扩展名为aac(在android 3gp上(的文件。所以你不能在服务器上播放,因为这认为文件是一个mp3但事实并非如此。当我尝试使用 html5 audio 播放它时,我遇到了以下问题。

我不知道你的服务器是如何工作的,但如果像html5 audio那么你应该将你的文件转换为支持的扩展名(mp3oggwav(,或者你应该使用另一个插件。

相关内容

  • 没有找到相关文章

最新更新