Arraybuffer到Base64,用于在ChromeApp中崩溃的大型视频

时间:2016-07-24 23:30:08

标签: javascript google-chrome web-applications google-chrome-os

我正在创建一个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?

欢迎任何其他建议

0 个答案:

没有答案