为JWplayer的工具提示缩略图(http://www.jwplayer.com/blog/building-tooltip-thumbnails-with-encodingcom/-生成“.VTT”文件及其附带的jpg sprite的最佳方法是什么?
我知道如何使用php创建一个图像精灵,但我不知道如何使用秒的时间制作每个视频的屏幕截图..我认为必须有一个服务器工具来完成所有任务但我不能找到它。
由于
答案 0 :(得分:15)
我写了一个脚本来完成这项任务。给定视频文件(MP4或M4v),生成缩略图图像,压缩为精灵,并生成与JWPlayer工具提示缩略图兼容的VTT文件。所有图像处理都使用来自ffmpeg,ImageMagick以及可选的sips和optipng的工具。 WebVTT生成部分,我不得不写。
你必须安装ffmpeg& imagemagick,至少要使用它。
Github代码在这里:https://github.com/vlanard/videoscripts(在精灵/)下。
基本要点是:
创建一堆缩略图,例如每隔45秒从视频
开始ffmpeg -i ../archive/myvideofile.mp4 -f image2 -bt 20M -vf fps=1/45 thumbs/myvideofile/tv%03d.png
将这些缩略图调整为较小,例如100像素宽
sips --resampleWidth 100 thumbs/myvideofile/tv001.png thumbs/myvideofile/tv002.png thumbs/myvideofile/tv003.png
如果sips不可用,请使用imageMagick实用程序:
mogrify -geometry 100x thumbs/myvideofile/tv001.png thumbs/myvideofile/tv002.png thumbs/myvideofile/tv003.png
获得身高和高度使用ImageMagick实用程序
的一个缩略图的宽度尺寸,用作网格坐标的基础identify -format "%g - %f" thumbs/myvideofile/tv001.png
返回输出,如: 100x55 + 0 + 0 - tv001.png
我们从中解析100和55作为我们的宽度和宽度。高度,以及每个缩略图的一般几何(W,H,X,Y)
然后我们从各个缩略图生成单个spritemap。我们确定目标网格大小(例如2x2,8x8)以适应我们为此视频生成的缩略图数量,以及使用ImageMagick实用程序传递精灵几何体
montage thumbs/myvideofile/tv*.png -tile 2x2 -geometry 100x55+0+0 thumbs/myvideofile/myvideofile_sprite.png
我们可以选择在此处运行额外的压缩步骤以使精灵更小
optipng thumbs/myvideofile/myvideofile_sprite.png
然后,我们根据我们创建的缩略图数量生成一个VTT文件 我们用来间隔缩略图标记每个时间段的间隔,以及 使用映射到的精灵中每个连续图像的已知坐标 相关部分。
答案 1 :(得分:3)
我知道这已经有几年了但是我遇到了同样的问题并找到了一个命令行工具,它可以非常快速地生成精灵,因为1.0.6支持开箱即用的WebVTT创建。名称为 mt ,您可以查看here。
从他们的文档中引用,您可以像这样使用它:
运行mt并将任何视频文件提供为args:
mt video.avi
可以通过提供的运行时标志更改某些设置 直接向mt获取更多信息,只需运行
即可mt --help
答案 2 :(得分:1)
您可以使用encoding.com的API并告诉他们也导出vtt文件
我建议您阅读encoding.com的知识库中的“How can I create time synced thumbnails for use in JW player?”解释
使用movie thumbnailer (mtn),这是在UNIX,Windows系统上运行的命令行工具。但是你必须编写一个自定义脚本来生成相应的VTT文件
答案 3 :(得分:1)
我开发了一个Ruby gem来轻松创建.VTT文件和缩略图精灵。
感谢鼓舞人心的@randalv!
你可以在这看一下: https://github.com/scaryguy/jwthumbs
实例化您的视频文件:
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4")
Jwthumbs::Movie.new
接受第二个参数作为options
哈希。您可以在实例化视频的同时配置多个内容:
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4", seconds_between: 60, sprite_name: "my_sprite_name.jpg")
或在您对视频进行了简化后,您可以使用Jwthumbs::Movie
文件来配置内容:
movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4")
movie.seconds_between = 60
movie.sprite_name = "my_sprite_name.jpg"
然后创建缩略图和.VTT文件只需运行此命令。
movie.create_thumbs!
答案 4 :(得分:0)
我制作了一个免费的网络应用程序来执行此操作:https://www.videohop.com.au/thumbnail-generator
拖入一个视频文件,它将为您提供一个包含缩略图精灵+ VTT文件的zip文件。支持多种质量设置。 (例如60p + 180p)