我正在使用cordova媒体插件录制.wav音频样本。
实际上我能够录制它们但我找不到获取已创建文件内容的方法。
如果我这样做:
// Record audio
//
function recordAudio() {
var src = "myrecording.wav";
var mediaRec = new Media(src, onSuccess, onError);
// Record audio
mediaRec.startRecord();
// Stop recording after 10 sec
var recTime = 0;
var recInterval = setInterval(function() {
recTime = recTime + 1;
setAudioPosition(recTime + " sec");
if (recTime >= 3) {
clearInterval(recInterval);
mediaRec.stopRecord();
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs){
fs.root.getFile("myrecording.wav", {create: true, exclusive: false},
function(entry){
console.log("console loggin file");
console.log(entry);
}, function(){
alert("file create error");
});
}, null);
}
}, 1000);
}
我在控制台中输入了这个:
{"isFile":true,"isDirectory":false,"name":"myrecording.wav","fullPath":"/myrecording.wav","filesystem":"<FileSystem: temporary>","nativeURL":"file:///Users/iamuser/Library/Developer/CoreSimulator/Devices/FC61A8C0-CF4B-4A1C-B22C-D8511B1B1707/data/Containers/Data/Application/716F442C-5076-4C69-9CA9-A1A8C2827898/tmp/myrecording.wav"}
但这不是文件内容,如何从documents:// directory?
中检索文件作为文本使用媒体插件将文件记录到document://audio.wav路径中,该路径似乎是一个临时文件
答案 0 :(得分:1)
媒体插件的含义是
提供录制和播放音频文件的功能
所以我想它不会给你原始数据。但是,如您所知,音频文件的URI,请使用文件插件从中获取数据。
<强>更新强>
如果您要上传文件,请参阅here。
如果您想要将音频文件作为Base64编码的字符串,请参阅here。
这是一个相当长的代码并且其中包含AngularJS,所以我将基本部分作为摘要在此处为您提供
function OnFileEntry(file){
var reader = new FileReader();
reader.onloadend = function(evt) {
var image = evt.target.result;
var base64Data = image.replace(/^data:audio\/mpeg;base64,/, "");
base64Data += base64Data.replace('+', ' ');
};
reader.readAsDataURL(file);
}
function OnGetFile(fileEntry){
fileEntry.file(OnFileEntry, fail);
}
function OnFileSystem(fileSystem){
fileSystem.root.getFile(recordName, null, OnGetFile, fail);
}
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, OnFileSystem, fail);
您需要更改的是recordName以匹配您的src属性的值。
这对你来说够了,还是有其他我可以帮助你的东西?