html video 控制逐帧播放?

image.png

let dom = $0;
let l = dom.duration * 60;
let t = 1;
dom.currentTime = 0;
dom.pause();
const loop = () => {
  dom.currentTime = (1 / 60) * t;
  if (t++ < l) requestAnimationFrame(loop);
};
requestAnimationFrame(loop);

展示效果只有两三帧有变化,问题是什么呢?

阅读 3.2k
2 个回答
let video = document.querySelector('video');
let canvas = document.querySelector('canvas');
let context = canvas.getContext('2d');

let frameRate = 30; // 视频的帧率
let frameDuration = 1 / frameRate;
let currentTime = 0;

function drawFrame() {
  context.drawImage(video, 0, 0, canvas.width, canvas.height);
  currentTime += frameDuration;
  video.currentTime = currentTime;
  if (currentTime < video.duration) {
    requestAnimationFrame(drawFrame);
  }
}

video.addEventListener('loadeddata', drawFrame);

是想实现快放或慢放的效果吗?playbackRate这个属性就行了吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题