我使用带有Cordova插件的Meteor在iPhone上录制视频,然后将其转换为blob进行上传。大约一半的时间我尝试将视频从本地文件系统转换为blob,但是另一半则会出现此错误:
InvalidCharacterError: DOM Exception 5: An invalid or illegal character was specified, such as in an XML name.
似乎通常在视频超过3秒时发生,但它发生在真正的短视频上。这是我的dataURItoBlob
函数:
function dataURItoBlob(dataURI) {
var input = dataURI.replace(/\s/g, '');
var binary = atob(input.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type: "video/mp4"});
}
我真的不确定我做错了什么,我尝试了其他几个类似的功能而没有运气。任何帮助是极大的赞赏。谢谢!
答案 0 :(得分:0)
发现这是base64 dataURI的问题,而不是blob函数。出于某种原因,在尝试使用readAsDataUrl
时它已损坏。根据{{3}},我按readAsBinaryData
解决了该问题并手动附加data:video/mp4;base64,
。