canvas - 限制 HTML <video> 元素的帧速率

标签 canvas html5-video

是否可以通过JS或其他方式限制<video>的FPS元素?我已经确定它可能需要绘制到 <canvas> ,但是如何限制 <canvas> 上每秒绘制的帧数?

最佳答案

足够简单。实现任何类型的视频/ Canvas 效果的最佳方法是从 requestAnimationFrame 开始,然后在每个周期中,您可以选择是否绘制帧或跳过它。假设 2D Canvas 具有最大兼容性,如下所示:

var MAX_FRAME_RATE = 5, // frames per second
    FRAME_DIFF = 1000 / MAX_FRAME_RATE,
    canvas = document.getElementById('canvas'),
    video = document.getElementById('video'),
    ctx = canvas.getContext('2d'),
    lastDraw = 0;

function render() {
    var now = Date.now(),
        diff = now - lastDraw;

    if (diff >= FRAME_DIFF) {
        ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
        lastDraw = now;
    }

    requestAnimationFrame(render);
}

render();

关于canvas - 限制 HTML <video> 元素的帧速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23840692/

相关文章:

android - 如何向 Canvas/paintText 添加自动换行符

javascript - Fabric js 如何设置百分比对象的位置

javascript - 在 JavaScript 中使用鼠标事件在 Canvas 上绘制直线

canvas - 基于 JavaFX FXML 的应用程序中直线和曲线的锐边

android - 不规则形状怎么画?

css - 如何在不在视频上方创建相同大小的条的情况下将 video.js 控件放置在视频下方

javascript - HTML5 视频在 IE9 RC 中失败,但在 IE9 Beta 中失败

php - 通过 PHP 加载时无法在 Chrome 中查找 WebM 文件(其他浏览器也可以)

html - 将 <canvas> 帧转换为视频?

javascript - 如何从 ServiceWorker 流式传输视频?