在JavaScript中获取视频第一帧

5 javascript thumbnails

如何在javascript中获取视频文件的第一帧作为图像?

Ser*_*tin 7

可以使用 HTML 5 视频和画布标签完成:

HTML:

<input type="file" id="file" name="file">

<video id="main-video" controls>
   <source type="video/mp4">
</video>

<canvas id="video-canvas"></canvas>
Run Code Online (Sandbox Code Playgroud)

Javascript:

var _CANVAS = document.querySelector("#video-canvas");
var _CTX = _CANVAS.getContext("2d");
var _VIDEO = document.querySelector("#main-video");

document.querySelector("#file").addEventListener('change', function() {

    // Object Url as the video source
    document.querySelector("#main-video source").setAttribute('src', URL.createObjectURL(document.querySelector("#file").files[0]));

    // Load the video and show it
    _VIDEO.load();

    // Load metadata of the video to get video duration and dimensions
    _VIDEO.addEventListener('loadedmetadata', function() {
        // Set canvas dimensions same as video dimensions
        _CANVAS.width = _VIDEO.videoWidth;
        _CANVAS.height = _VIDEO.videoHeight;
    });

    _VIDEO.addEventListener('canplay', function() {
        _CANVAS.style.display = 'inline';
        _CTX.drawImage(_VIDEO, 0, 0, _VIDEO.videoWidth, _VIDEO.videoHeight);
    });

});
Run Code Online (Sandbox Code Playgroud)

查看演示

  • 对我不起作用。我必须添加“video.currentTime = 0.001”作为解决方法,否则图像为空白。 (5认同)
  • 这种下划线大写命名约定看起来很特别。 (3认同)

Ger*_*art 6

只需将视频标签添加到没有控件和自动播放的页面即可。

<video width="96" height="54" class="clip-thumbnail"> ... </video>

缺点是用户可以通过右键单击缩略图并在上下文菜单中选择“播放”来播放视频。为了避免这种情况,您需要一些 javascript 来监听点击事件并取消它们(从缩略图中删除上下文菜单)。


Jos*_*ola -1

JavaScript 无法做到这一点。