使用cordova媒体插件录制音频会导致空文件
Posted
技术标签:
【中文标题】使用cordova媒体插件录制音频会导致空文件【英文标题】:Recording audio using cordova media plugin results in empty file 【发布时间】:2016-01-05 04:59:15 【问题描述】:我正在使用以下代码在 android 设备上使用 Cordova Media 插件录制音频。尽管在 stopRecord() 上成功返回,这会导致一个空的音频文件。有人能指出这段代码可能有什么问题吗?
$cordovaFile.createFile(cordova.file.dataDirectory, 'new-rec.amr'), false)
.then(function (fileObj)
console.log('File created', fileObj);
var nativePath = fileObj.nativeURL;
resolveLocalFileSystemURL(nativePath, function (entry)
var internalPath = entry.toInternalURL();
var mediaRec = new Media(internalPath,
//success callback
function (success)
console.log("record success", success);
,
//error callback
function (err)
console.log("record error: " + JSON.stringify(err));
);
// Start recording audio
mediaRec.startRecord();
);
, function (error)
console.log('Cannot create a file to initiate a new recording', error);
);
【问题讨论】:
这个运气好吗?我也有同样的问题 【参考方案1】:我今天遇到了同样的问题。通过释放 Media 对象来解决它。我不确定为什么这会有所帮助,但我有一种感觉,可能是操作系统保留了 Media 对象而不是保存它,然后一旦它被释放,它就被正确保存了?
虽然不是 100% 确定。它无需在其他 Cordova 目录(例如 cordova.file.externalDataDirectory)中发布即可工作。
这是我的代码:
var fileName = randomFileName();
fileName = fileName + ".aac";
var store = cordova.file.dataDirectory;
window.resolveLocalFileSystemURL(store, function(dir)
var directoryToSave = dir.nativeURL + fileName;
$scope.audioRecording = new Media(directoryToSave, audioRecordingSuccess, audioRecordingFail, audiostatus);
$scope.audioRecording.startRecord();
setTimeout(function()
$scope.audioRecording.stopRecord();
$scope.audioRecording.release();
, 5000);
);
【讨论】:
以上是关于使用cordova媒体插件录制音频会导致空文件的主要内容,如果未能解决你的问题,请参考以下文章
Cordova:在 iOS 中存储录制的音频文件的正确位置是啥?