【发布时间】:2014-07-01 16:40:40
【问题描述】:
我正在尝试从 input type='file' 表单中的视频文件 (mp4,3gp) 创建缩略图预览。许多人说这只能在服务器端完成。我发现这很难相信,因为我最近才使用 HTML5 Canvas 和 Javascript 发现了这个 Fiddle。
唯一的问题是这需要视频存在并且用户在点击按钮捕获缩略图之前点击播放。我想知道是否有一种方法可以在没有玩家在场且用户单击按钮的情况下获得相同的结果。例如:用户点击文件上传,选择视频文件,生成缩略图。欢迎任何帮助/想法!
【问题讨论】:
-
玩家显然必须在场,因为这就是生成要捕获的图像的原因。
-
您可以使用css隐藏播放器,并调用videoTag.play()开始播放。我建议跳入 18 秒,等待它显示,然后将其发送到画布 drawImage 例程。我以这种方式将一个电影文件夹变成了 chrome 中的缩略图库,所以我可以向你保证它可以工作。
-
如果视频使用当前浏览器支持的编解码器,您可以处理拖放/选择的视频文件,获取视频文件的对象 URL,并将该值设置为视频的 src 属性元素。
-
我最近一直在开发一个插件来解决您问题中的项目(从
<video>s 生成缩略图,将Blob/File转换为<video>,等等)。看看,也许它会证明对你有用。 github.com/rnicholus/frame-grab.js -
frame-grab 的功能是 100% 客户端。例如,如果您在页面上包含文件输入元素或拖放区。当您的用户选择/删除视频文件时,您可以将文件输入/删除事件中的 Blob 传递给 frab-grab 的
blob_to_video方法,获取<video>并将其输入帧抓取实例,您可以在其中通过在 frame-grab 的 API 中公开的各种工作流/方法生成图像。这一切都发生在浏览器中,没有任何东西发送到服务器。我鼓励您在 github 存储库中提出问题或留下功能请求,我们可以在那里讨论更多内容。
标签: javascript html video thumbnails video-thumbnails