Ffmpeg 为Jwplayer的工具提示缩略图选项生成所有文件(.vtt+;sprite)

Ffmpeg 为Jwplayer的工具提示缩略图选项生成所有文件(.vtt+;sprite),ffmpeg,jwplayer,Ffmpeg,Jwplayer,为Jwplayer的工具提示缩略图生成“.VTT”文件及其附带的jpg精灵的最佳方法是什么 我知道如何用php制作一个图像精灵,但我不知道如何在一秒钟内制作每个视频的截图。我认为必须有一个服务器工具来完成所有的任务,但我找不到它 谢谢选项1: 您可以使用encoding.com的API并告诉他们也导出vtt文件 我建议阅读encoding.com知识库中的“”说明 备选案文2: 使用,这是一个在UNIX、Windows系统上运行的命令行工具。但是您必须编写自定义脚本来生成相应的VTT文件 超级

为Jwplayer的工具提示缩略图生成“.VTT”文件及其附带的jpg精灵的最佳方法是什么

我知道如何用php制作一个图像精灵,但我不知道如何在一秒钟内制作每个视频的截图。我认为必须有一个服务器工具来完成所有的任务,但我找不到它

谢谢

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

我建议阅读encoding.com知识库中的“”说明

备选案文2: 使用,这是一个在UNIX、Windows系统上运行的命令行工具。但是您必须编写自定义脚本来生成相应的VTT文件

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

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

您必须至少安装ffmpeg和imagemagick才能使用此功能

Github代码如下:(在sprites/下)

基本要点是:

  • 创建一组缩略图,例如,从视频中每隔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实用程序传入sprite几何体

    montage thumbs/myvideofile/tv*.png -tile 2x2 -geometry 100x55+0+0 thumbs/myvideofile/myvideofile_sprite.png
    
  • 或者,我们可以在这里运行额外的压缩步骤,使精灵变小

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


  • 我开发了一个RubyGem,可以轻松创建.VTT文件和缩略图精灵

    感谢您激励@randalv

    您可以在此处查看:


    用法 实例化您的视频文件:

    movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4")
    
    Jwthumbs::Movie.new
    接受第二个参数作为
    options
    hash。您可以在实例化视频的同时配置多个内容,如下所示:

    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!
    

    我知道这已经有几年的历史了,但我也遇到了同样的问题,我发现了一个命令行工具,它可以非常快速地生成精灵,因为1.0.6支持即时创建WebVTT。名称是mt,您可以检查它

    引用他们的文档,您可以这样使用:

    movie = Jwthumbs::Movie.new("YOUR_VIDEO.mp4", seconds_between: 60, sprite_name: "my_sprite_name.jpg")
    
    只需运行mt并以args的形式提供任何视频文件:
    mt video.avi

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


    为此,我制作了一个免费的web应用程序:


    拖动一个视频文件,它将为您提供一个包含缩略图精灵+VTT文件的zip文件。支持多个质量集(例如,60p+180p)

    我以前没有用ffmpeg做过这项工作,但我使用了一个由Scorp开发的名为Video Thumbnails Maker的程序,该程序可以生成拇指和VTT文件。它在这里-谢谢Ethan,但这是Ubuntu服务器的功能吗?我的意思是我可以自动完成还是手动完成?这是一个手动完成的应用程序。谢谢,我终于做了类似的事情,但之前没有做过获取缩略图我获取视频的长度,因此我对所有视频都有相同数量的拇指,我发现生成vtt更容易。这绝对是一项了不起的工作!如果您允许,我想为它制作一个Ruby包装,作为一个宝石?@scaryguy,请执行!我最新登录到github,并进行了几个关键更新。1)使用jpg而不是png,更小的精灵,2)添加了调整以更好地将快照图像同步到vtt文件中的开始时间,以抵消ffmpeg中出现的时间漂移;3) 忽略sprite中的第一个图像(0秒),因为JwPlayer不会显示它;4) 现在可通过命令行配置快照定时parameter@randalv你做得很好!恭喜!我现在很忙,但我想以某种方式去做。让我们看看我能做些什么。@Sflagg尝试在终端中运行
    哪个sips
    ,以确保安装了它。如果你看到它,我也会尝试手动运行
    sips--resampleWidth 100 yourfilewhatever.png
    ,看看它会返回什么(显然是用合法的文件名替换文件名)。很高兴现在有两个语言选项。伟大的贡献@randalv也许你可以像我为你做的那样,给我的回购协议一个反向链接:)你知道,反向链接让你更容易通过网络找到东西