生成Jwplayer的Tooltip Thumbnails选项的所有文件(.vtt + sprite)

时间:2013-11-16 18:18:16

标签: ffmpeg jwplayer

为JWplayer的工具提示缩略图http://www.jwplayer.com/blog/building-tooltip-thumbnails-with-encodingcom/-生成“.VTT”文件及其附带的jpg sprite的最佳方法是什么?

我知道如何使用php创建一个图像精灵,但我不知道如何使用秒的时间制作每个视频的屏幕截图..我认为必须有一个服务器工具来完成所有任务但我不能找到它。

由于

5 个答案:

答案 0 :(得分:15)

我写了一个脚本来完成这项任务。给定视频文件(MP4或M4v),生成缩略图图像,压缩为精灵,并生成与JWPlayer工具提示缩略图兼容的VTT文件。所有图像处理都使用来自ffmpeg,ImageMagick以及可选的sips和optipng的工具。 WebVTT生成部分,我不得不写。

你必须安装ffmpeg& imagemagick,至少要使用它。

Github代码在这里:https://github.com/vlanard/videoscripts(在精灵/)下。

基本要点是:

  1. 创建一堆缩略图,例如每隔45秒从视频

    开始
    ffmpeg -i ../archive/myvideofile.mp4 -f image2 -bt 20M -vf fps=1/45 thumbs/myvideofile/tv%03d.png 
    
  2. 将这些缩略图调整为较小,例如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
    
  3. 获得身高和高度使用ImageMagick实用程序

    的一个缩略图的宽度尺寸,用作网格坐标的基础
    identify -format "%g - %f" thumbs/myvideofile/tv001.png 
    

    返回输出,如: 100x55 + 0 + 0 - tv001.png

    我们从中解析100和55作为我们的宽度和宽度。高度,以及每个缩略图的一般几何(W,H,X,Y)

  4. 然后我们从各个缩略图生成单个spritemap。我们确定目标网格大小(例如2x2,8x8)以适应我们为此视频生成的缩略图数量,以及使用ImageMagick实用程序传递精灵几何体

    montage thumbs/myvideofile/tv*.png -tile 2x2 -geometry 100x55+0+0 thumbs/myvideofile/myvideofile_sprite.png
    
  5. 我们可以选择在此处运行额外的压缩步骤以使精灵更小

    optipng thumbs/myvideofile/myvideofile_sprite.png
    
  6. 然后,我们根据我们创建的缩略图数量生成一个VTT文件 我们用来间隔缩略图标记每个时间段的间隔,以及 使用映射到的精灵中每个连续图像的已知坐标 相关部分。

答案 1 :(得分:3)

我知道这已经有几年了但是我遇到了同样的问题并找到了一个命令行工具,它可以非常快速地生成精灵,因为1.0.6支持开箱即用的WebVTT创建。名称为 mt ,您可以查看here

从他们的文档中引用,您可以像这样使用它:

  

运行mt并将任何视频文件提供为args:mt video.avi

     

可以通过提供的运行时标志更改某些设置   直接向mt获取更多信息,只需运行mt --help

即可

答案 2 :(得分:1)

选项1:

您可以使用encoding.com的API并告诉他们也导出vtt文件

我建议您阅读encoding.com的知识库中的“How can I create time synced thumbnails for use in JW player?”解释

选项2:

使用movie thumbnailer (mtn),这是在UNIX,Windows系统上运行的命令行工具。但是你必须编写一个自定义脚本来生成相应的VTT文件

  • 超级快!感谢FFmpeg的libavcodec。
  • 命令行程序:可以在与共址服务器的远程连接上使用,也可以在脚本中使用。
  • 批处理模式:递归搜索电影文件的目录。默认情况下以较低优先级运行(Linux上为10,Windows上为空闲)。 要以普通优先级运行,请使用-n选项。
  • 缩略图在一个jpeg文件中组合在一起,也可以单独保存(-I 选项)。
  • 在Linux和Linux中使用Unicode文件名都可以正常工作视窗 (可能需要使用-f fontfile更改字体)。

答案 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)