【问题标题】:How can I use javascript to get the thumbnail of an html5 video?如何使用 javascript 获取 html5 视频的缩略图?
【发布时间】:2015-06-11 10:12:43
【问题描述】:

我找到了获取视频缩略图的 JavaScript 代码,给出了它的 URL。但是,我只为 YouTube 和 Vimeo 找到了这个。似乎没有人列出如何处理旨在嵌入 html5 视频标签的视频的示例。 可以做到吗? 谢谢。

【问题讨论】:

    标签: javascript video html5-video video-thumbnails


    【解决方案1】:

    是的,您可以将视频用作画布的图像源。只需将代码包装为一个以视频和大小为参数的函数,然后返回一个画布元素。

    视频必须已加载并位于您要拍摄快照的帧处。

    示例方法

    function createThumb(video, w, h) {
      var c = document.createElement("canvas"),    // create a canvas
          ctx = c.getContext("2d");                // get context
      c.width = w;                                 // set size = thumb
      c.height = h;
      ctx.drawImage(video, 0, 0, w, h);            // draw in frame
      return c;                                    // return canvas
    }
    

    画布可以插入到 DOM 中并用作图像支架。如果您更喜欢图像元素,则必须执行更多步骤,并使用回调(或承诺)处理图像加载的异步性质:

    function createThumb(video, w, h, callback) {
      var c = document.createElement("canvas"),    // create a canvas
          ctx = c.getContext("2d"),                // get context
          img = new Image();                       // final image
      c.width = w;                                 // set size = thumb
      c.height = h;
      ctx.drawImage(video, 0, 0, w, h);            // draw in frame
      img.onload = function() {                    // handle async loading
        callback(this);                            // provide image to callback
      };
      img.src = c.toDataURL();                     // convert canvas to URL
    }
    

    如果您遇到视频帧大小的问题,可以将 drawImage() 参数替换为:

    ctx.drawImage(video, 0, 0, video.videoWidth, video.videoHeight, 0, 0, w, h);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 2015-07-30
      • 2010-11-19
      • 2012-03-28
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多