1

如果我有一个视频文件的 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,有没有更好的方法来做到这一点?

4

0 回答 0