如果我有视频文件的base64,有什么方法可以抓取javascript中的所有帧而无需播放整个视频或将视频发送回服务器?
我正在制作一个视频网页,将其转换为ascii-art并播放。起初,我认为最好的方法是将视频上传到服务器,在那里解码并转换,然后用转换后的视频进行响应;但是,由于我不压缩输出“视频”(实际上只是一大块文本),因此响应非常大,需要花费大量时间进行传输。
我知道如果我在前端解析视频,我可以做这样的事情(不确定这段代码是否遗漏了一些东西,但它传达了一般的想法):
var frames = [];
var context = document.getElementById('canvas').getContext('2d');
var video = document.createElement('video');
video.src = base64Value;
function callback() {
context.drawImage(video, 0, 0);
frames.push(grabFrameFromCanvasContext(context));
if (video.currentTime < video.duration) {
setTimeout(callback, 50);
}
}
callWhenVideoStartsPlaying(callback);
但视频解析需要很长时间。这对大多数情况都有意义,因为浏览器会从某个地方传输视频,但由于视频源是base64,有没有更好的方法呢?