我遇到了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上运行有人已经遇到过这种问题吗?
答案 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
此外,您需要为录制创建一个唯一的文件名,因为它似乎不会覆盖文件?需要对此进行更多测试。
祝所有看到这一点的人好运。