Base64-用js编码视频文件

Base64-encoding a Videofile in js

本文关键字:视频 文件 编码 js Base64-      更新时间:2023-09-26

所以我有一个视频文件和它的路径(例如 /outerfolder/innerfolder/video.mp4)。我现在想用 Base64 在 JS 中对这个视频进行编码,以便能够将其存储在数据库中。如果您能帮助我编码视频文件,我将不胜感激。提前谢谢。

您可以使用以下函数对文件进行编码,以将文件转换为 ArrayBuffer:

[更新]

//<input type=file id="encondeMP4">
var encodeMP4 = document.getElementById('encondeMP4');

现在,您可以在文件输入更改时添加事件侦听器

window.onload = function () {
    //add eventlisteners
    encodeMP4.addEventListener('change', someFunction);
}

您需要一个函数来处理来自事件侦听器的调用

function someFunction(){
    encode(arrayBufferToString)
}
function encode(callback){
    var file = encodeMP4.files[0];
    var reader = new FileReader();
    reader.onload = function(e){
        var contents = e.target.result;
        var contentBuffer = arrayBufferToString(contents);
        var array = callback(contentBuffer);
    }
    reader.readAsArrayBuffer(file);
}

在 var 数组中,您现在将 MP4 包含在二进制中,在上一个函数中是一个内部变量,因此您需要根据需要调整此代码。也许是一个叫做YourEncodedMP4 = array的全局容器

function arrayBufferToString(buffer) {
    var binary = '';
    var bytes = new Uint8Array( buffer );
    var len = bytes.byteLength;
    for (var i = 0; i < len; i++) {
        binary += String.fromCharCode( bytes[ i ] );
    }
    return binary;
}

您现在可以调用此函数将 MP4 加密字符串转换为 Base64 字符串。

由您决定 var 数组内容的存储位置,但请记住此调用是异步的。

现在您可以使用容器"YourEncodedMP4"使用此函数

function stringToArrayBuffer(YourEncodedMP4) {
    var arrBuff = new ArrayBuffer(YourEncodedMP4.length);
    var writer = new Uint8Array(arrBuff);
    for(var i = 0, len = YourEncodedMP4.length; i < len; i++){
        writer[i] = YourEncodedMP4.charCodeAt(i);
    }
    return writer;
}

你现在有一个返回字节数组的函数,而不是你可以使用的

var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(stringToArrayBuffer(YourEncodedMP4))));

你最终会得到一个StringBase64