Cordova:媒体插件录制音频空文件
我正在使用Cordova:媒体插件录制音频空文件,cordova,Cordova,我正在使用cordova插件媒体录制音频。我将路径设置为cordova.file.externalDataDirectory 我有以下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-
cordova插件媒体
录制音频。我将路径设置为cordova.file.externalDataDirectory
我有以下权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
以下是我录制音频的方式:
let src = app.path + new Date().getTime() + app.extension;
$scope.mediaRec = new Media(src,
(data) => {
let img = '<div><audio type="audio/aac" controls controlsList="nodownload"><source src="' + src + '"></audio><br/></div><div><br/></div>';
document.execCommand('insertHTML', false, img);
},
(error) => {});
$scope.mediaRec.startRecord();
$timeout(function() {
$scope.mediaRec.stopRecord();
$scope.mediaRec.release();
},5000);
让src=app.path+new Date().getTime()+app.extension;
$scope.mediaRec=新媒体(src,
(数据)=>{
设img='
';
document.execCommand('insertHTML',false,img);
},
(错误)=>{});
$scope.mediaRec.startRecord();
$timeout(函数(){
$scope.mediaRec.stopRecord();
$scope.mediaRec.release();
},5000);
当我检查我的存储时,文件正在创建中,但文件是空的。它的大小为0字节。它不能播放
我使用了不同的文件类型.aac、.mp3、.3gp、.wav
,但它们都是相同的
如何成功保存文件?我目前使用以下方法在Cordova和VueJs中录制语音:
async startRecording() {
const audioFileName = `${uid()}.mp3`;
let fileSrc;
try {
fileSrc = await new Promise((resolve, reject) => {
// eslint-disable-next-line no-undef
requestFileSystem(LocalFileSystem.PERSISTENT, 0, fileSystem => {
fileSystem.root.getFile(audioFileName, {
create: true,
exclusive: false,
}, fileEntry => {
resolve(fileEntry.toURL());
}, reject);
}, reject);
});
} catch (e) {
this.$logger.catchError(e);
return;
}
this.fileSrc = fileSrc;
// this.$logger.debug('fileSrc', fileSrc)
// eslint-disable-next-line no-undef
this.media = new Media(fileSrc, () => {
// this.$logger.debug('media success', this.media)
}, err => {
this.$logger.debug('media error', err.message);
});
this.media.startRecord();
this.state = 'recording';
},
stopRecording() {
this.media.stopRecord();
if (this.autoPlay) {
this.media.play();
}
this.state = 'finish';
},
finishRecording() {
this.$emit('input', this.fileSrc);
this.state = 'start';
this.media.release();
this.media = null;
},
如您所见,首先,我通过
requestFileSystem
保留一个文件路径,然后将其传递给录制插件<代码>新媒体(fileSrc…我放弃使用cordova插件媒体
,我现在正在使用cordova插件音频输入
。我一直在努力寻找出路。永不放弃,总会有出路;-)