首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从data-uri视频中拍摄快照

从data-uri视频中拍摄快照
EN

Stack Overflow用户
提问于 2016-06-27 23:19:36
回答 1查看 67关注 0票数 0

我正在尝试从视频data-uri中获取快照

代码语言:javascript
复制
var video = document.createElement('video');
video.src = uri;

canvas = document.createElement('canvas');
canvas.style.visibility = 'hidden';
document.body.appendChild(canvas);

var context = canvas.getContext('2d');
context.drawImage(video, 0, 0, canvas.width, canvas.height);
var snapshot = canvas.toDataURL();

但这不管用。为什么?

EN

回答 1

Stack Overflow用户

发布于 2017-03-26 18:25:38

尽管它是一个数据URI,您可能希望视频立即加载,但您确实需要侦听视频的canPlay事件(see MDN)。

代码语言:javascript
复制
function onFile(ev) {
  var file = ev.target.files[0];
  console.log();
  var reader = new FileReader();
  reader.addEventListener('load', function() {
    taksVideoSnapshot(reader.result);
  }, false);

  reader.readAsDataURL(file);
}

function taksVideoSnapshot(videoUri) {
  var video = document.createElement('video');

  video.addEventListener('canplay', function() {
    canvas = document.createElement('canvas');
    canvas.style.visibility = 'hidden';
    document.body.appendChild(canvas);

    var context = canvas.getContext('2d');
    context.drawImage(video, 0, 0, canvas.width, canvas.height);
    var snapshot = canvas.toDataURL();

    console.log('Snapshot', snapshot.length);
    showThumb(snapshot);
  }, false);

  video.src = videoUri;
  document.body.appendChild(video);
}

function showThumb(snapshot) {
  var thumb = document.createElement('img');
  thumb.src = snapshot;
  document.body.appendChild(thumb);
}
代码语言:javascript
复制
<input type="file" onchange="onFile(event)">

另请参见JSBin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38057655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档