你好,我有下面的JS代码,从文件输入创建一个视频:
<canvas id="prevImgCanvas">Your browser does not support the HTML5 canvas tag.</canvas>
<input id="videoage" type="file" name="video" class="chooseNail" accept="video/*" style="display:none;" onchange="loadSnippetThumb(event)">
<label for="videoage" id="labelvideo" >Choose Video</label>
var loadSnippetThumb = function(event) {
var c = document.getElementById("prevImgCanvas");
var context = c.getContext('2d');
var url = URL.createObjectURL(event.target.files[0]);
var video = document.getElementById('video222');
video.src = url;
video.autoPlay = true;
}
这将创建一个在屏幕上播放的视频,用户已选择使用文件输入上传。我不希望视频显示在屏幕上,我只希望能够挑选视频的随机帧并将其显示在画布上。我该如何做到这一点?谢谢。
3条答案
按热度按时间rryofs0p1#
在
seeked
和loadeddata
事件上添加侦听器,并在loadeddata
事件中设置currentTime
,以获得正确的video.duration
。此时将调用seeked
事件并绘制您的视频帧:JSFiddle here中的相同代码
1mrurvl12#
我正在创建一个先进的缩略图生成器,并决定给它一个在HTML/浏览器第一。
我需要检查的第一件事是我是否可以从视频中捕获/提取一帧,因为此功能将是应用程序的支柱。
我已经检查了类似的问题,但这一个似乎是最简单/孤立的一个,所以我张贴在这里。
我用不言自明的代码构建了一个非常简单的测试用例。
注意:下载按钮在代码片段中似乎不起作用(因为iframe),你可以手动下载(右键单击图像并另存为)。
rdrgkggo3#
对我有效的是:
canvas.toBlob
获取blob要验证它,请转到https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video并用我的代码替换代码。按下run,播放视频并截取屏幕
这里是下载图像的另一个片段https://gist.github.com/jrichardsz/05eae330397bfb117d5f3cc60545d984#file-image-or-frame-from-video-tag-html-javascript-download-image-html