代码之家  ›  专栏  ›  技术社区  ›  Megidd

通过画布绘制VideoJS帧

  •  0
  • Megidd  · 技术社区  · 2 年前

    它是 posted 一旦你使用VideoJS播放视频,你就不应该触摸 <video> VideoJS从未使用过的标签:

    我在画布上绘制视频帧,代码取自 here :

    document.getElementById("btn").onclick = (evt) => {
      const canvas = document.getElementById("canvas");
      const video = document.querySelector("video#video, #video video");
      canvas.width = video.videoWidth;
      canvas.height = video.videoHeight;
      canvas.getContext("2d").drawImage(video, 0, 0);
    };
    @import url("https://cdnjs.cloudflare.com/ajax/libs/video.js/7.11.7/video-js.min.css");
    <script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.11.7/video.min.js"></script>
    <video class = "video-js vjs-theme-fantasy" vjs-big-play-centered muted controls id="video" data-setup="{}">
      <source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4">
      <source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm">
    </video>
    <button id="btn">draw to canvas</button>
    <canvas id="canvas"></canvas>

    问题

    问题是这行代码 <视频> VideoJS使用的元素:

    const video = document.querySelector("video#video, #video video");
    

    上述声明是 使用VideoJS API。VideoJS API是否有一种标准的方法来做到这一点?是否有另一种方法可以将VideoJS绘制到画布上,这种方法与VideoJS API更一致?

    0 回复  |  直到 2 年前
        1
  •  1
  •   Megidd    2 年前

    @VC。一条评论回答了我的问题:

    访问没有问题 <video> 要绘制到的对象 <canvas> VideoJS只是一些用于用户界面和处理加载某些文件类型(如M3U8播放列表)的代码。我认为Asker被告知不要触摸视频标签,因为他们正在调整与VideoJS选项冲突的方式(比如当VideoJS有自己的海报选项时在视频标签中设置海报等)。。。