我正在创建一个Chrome应用程序,我正在尝试将我从一个xmlHttpRequest转换为数据缓冲区的视频转换为Base64,这样我就可以将它存储在chrome.storage中(因为chrome.storage不支持存储blob或直接阵列缓冲区)。
我正在使用此函数进行编码/转换
this.arrayBufferToBase64 = function ( buffer, type ) {
var binary = '';
var bytes = new Uint8Array( buffer );
var len = bytes.byteLength;
for (var i = 0; i < len; i++) {
binary += String.fromCharCode( bytes[ i ] );
}
if (type == "video"){
return 'data:video/webm;base64,' + window.btoa( binary );
}
else{
return 'data:image/png;base64,' + window.btoa( binary )
}
}
20MB的视频工作得很好,但看起来超过200MB的视频只会让应用程序崩溃。
所以有几个问题:
有没有更好的方法从arraybuffer转换为base64?
有没有办法将不可序列化的对象(例如blob)存入chrome.storage?
欢迎任何其他建议