无法识别使用cordova-plugin-media生成的Ionic 2音频文件

时间:2017-06-30 10:41:01

标签: android cordova audio plugins

我遇到了cordova Media插件的问题,我按照所有步骤从语音记录生成音频文件,一切正常,文件已创建,但是当我尝试用音频播放器打开它时在我的设备上它根本不播放,我收到一条消息,告诉我该播放器不处理此文件类型。

以下是代码:

import { Component } from '@angular/core';
import {IonicPage, NavController} from 'ionic-angular';
import { MediaPlugin, MediaObject} from '@ionic-native/media';
import { File } from '@ionic-native/file';

@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  private isRecording: boolean = false;

  constructor(public navCtrl: NavController, private media: MediaPlugin, private file: File) {
  }

  record(){
    this.isRecording = true;
    const onStatusUpdate = (status) => console.log(status);
    const onSuccess = () => console.log('Action is successful.');
    const onError = (error) => console.error(error.message);

    const file: MediaObject = this.media.create('my_awesome_file.aac', onStatusUpdate, onSuccess, onError);

    file.startRecord();
    window.setTimeout(() => {
      file.stopRecord();
      file.release();
    }, 10000);
  }

  stop(){
    this.isRecording = false;
  }

  noRecording(){
    return !this.isRecording;
  }
}

现在我只通过点击记录开始录制,然后设置超时使其在10秒后停止。在控制台日志中,一切进展顺利,操作成功并生成文件。

可能是因为我的设备?我让它在android 4.4.2

下运行的三星Galaxy tab 3上运行

有人已经遇到过这种问题吗?

2 个答案:

答案 0 :(得分:0)

好吧,它来自设备kitkat太旧,我用棒棒糖做了另一个测试,它运作良好。

答案 1 :(得分:0)

我也有同样的问题。事实证明我的设备太旧了。我尝试了每个文件扩展名(mp3,wav,aac,amr,m4a)。什么都没有用 - 电话会一直说它无法播放文件。奇怪的是,媒体文件的持续时间为0秒,但媒体文件具有实际文件大小(如实际记录的字节数)。我还将振幅记录到控制台,当我对着麦克风讲话时,控制台发出波动,这表明它一定是在拿起东西。我使用的是版本5.0.1(" Lollipop"),但是当我切换到6.0.1(" Marshmallow")时,它工作得很好,甚至在录制前都要求设备权限。 / p>

我还遇到了在sd卡的根目录中生成tmprecording的问题,我用这篇文章解决了这个问题: https://forum.ionicframework.com/t/mediaplugin-does-not-save-audio-recording-into-file-ionic-native/91868/4

此外,您需要为录制创建一个唯一的文件名,因为它似乎不会覆盖文件?需要对此进行更多测试。

祝所有看到这一点的人好运。