如何为视频创建缩略图或预览?

Posted

技术标签:

【中文标题】如何为视频创建缩略图或预览?【英文标题】:How to create thumbnails or preview for videos? 【发布时间】:2011-01-16 23:00:25 【问题描述】:

我想显示我网站上列出的视频的缩略图或预览面板,我想从视频中获取单个帧(从特定时间,即在 1 分钟后获取一帧)并将它们显示为缩略图,如优酷...

有什么帮助吗?

【问题讨论】:

尝试按照这个关于 php 和 ffmpeg 的教程,alberton.info/… 【参考方案1】:

看看 ffmpeg-php 库。这是在 PHP 中处理不同格式视频的唯一简单方法。

还有一个名为 PHP Video Toolkit 的包装器,您可以在这里找到它:http://sourceforge.net/projects/phpvideotoolkit/

【讨论】:

我可以使用 ffmpeg-php 创建缩略图吗?我在想它可以用来将视频转换为不同的格式......如果可能的话,我该怎么做? ffmpeg 中是否有任何预定义的函数或方法? 下载包并查看 example02.php:有 $toolkit->extractFrames() 调用可以满足您的需要... ;) 您可以轻松修改源代码以提取在给定时间只有一帧。 感谢 Napolux。这对我帮助很大。但是您介意解释一下,我们如何提高缩略图的质量?【参考方案2】:

添加如何使用 ffmpeg 答案,this is the parameters you're looking for:

ffmpeg  -itsoffset -4  -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg

【讨论】:

另外值得注意的是,即使音频或视频有可用的图像帧,仍然会生成“test.jpg”。当没有图像帧时,test.jpg 将是一个大小为零的文件。因此,您需要检查生成的文件的大小,以确保您有一个可以使用的文件。【参考方案3】:

在现代浏览器中,您还可以使用视频标签和画布来捕获帧并将其保存为图像。

见How can we get the screenshot of the video in html5 using canvas

【讨论】:

这应该是答案。我们花了一天时间试图让 ffmpeg 可靠地工作。为了获得缩略图,我们最终使用 javascript,上传视频后,我们播放视频,然后在 5 秒后将保存的图像从画布传输到画布。工作方式比 ffmpeg 更可靠。 Windows 上的 Ffmpeg 进程即使在我杀死它之后也不会停止。 @michaelhanon 对于一个,这个或链接的答案都应该尽可能地总结链接,以创建冗余,并且,更短的版本直截了当。在很多情况下,依靠客户端 javascript 创建缩略图远非理想,但对于大多数人来说,这肯定是一种很棒的方式。如果托马斯得到足够多的支持,也许他会改进他的答案,并最终为我们带来一个完整的解决方案……;P

以上是关于如何为视频创建缩略图或预览?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Youtube javascript API 在特定“秒”获取 youtube 视频的缩略图或快照?

通过从缩略图或下一个上一个按钮中选择来更改图像

如何为音乐文件创建专辑缩略图

如何为缩略图 Woocommerce 创建滑块

怎么更换文件夹下的视频预览的缩略图

Unity Prefab 缩略图全黑无法预览