Правильный способ кодирования arrayBuffer в Base64 и наоборот - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть этот код:

var bufferPromise = e.data.arrayBuffer();
                    bufferPromise.then(function(array){
                        var base64chunk = _base64ArrayBuffer(array)
                        var base64_string = 'data:video/webm;base64,' + base64chunk
                        console.log(base64_string)
                        var arr = _base64ToArrayBuffer(base64_string)
                        sourceBuffer.appendBuffer(arr);
                        //sourceBuffer.appendBuffer(new Uint8Array(array)); // works!
                    })

Где мне нужно преобразовать буфер array в этом коде для преобразования в base64, и для проверки правильности base64 мне нужно преобразовать base64 обратно в arrayBuffer и затем передать его в sourceBuffer для отображения. Проблема с этим кодом в том, что base64 не работает, фактически он выдает InvalidCharacterError: String contains an invalid character в функции _base64ToArrayBuffer.

function _base64ToArrayBuffer(base64) {
    var binary_string = window.atob(base64);
    var len = binary_string.length;
    var bytes = new Uint8Array(len);
    for (var i = 0; i < len; i++) {
        bytes[i] = binary_string.charCodeAt(i);
    }
    return bytes.buffer;
}

Мой вопрос: что является правильной функцией от массива до base64 и как правильно base64 с функцией массива ?

1 Ответ

1 голос
/ 05 апреля 2020

Ваша базовая строка 64 содержит data:[<mediatype>][;base64],<data> в начале, поэтому вам нужно получить все остальное после этого.

Вы можете попробовать это var myBase64 = str.split('base64,')[1]; и затем выполнить ваши проверки.

Вы можете прочитать больше здесь:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...