如何生成用于 VideoJS 的视频预览缩略图?
How to generate video preview thumbnails for use in VideoJS?
我转到了 VideoJs (html5) 并且需要弄清楚如何为搜索栏生成缩略图。我试过使用 videojs-thumbnails,但是这需要有一个带有 sprite 图像的预加载 vtt 文件。我正在尝试找出一种自动加载常规 mp4 (h264) 文件缩略图的方法。 Flowplayer 能够用它自己的视频做到这一点,现在想弄清楚如何用 VideoJs 做到这一点。
我希望他们是我错过的能够做到这一点的插件,但还没有找到。我想出的最好办法是从 mp4 文件中提取缩略图,将其组合成精灵图像,并使用 #xywh 属性。
如果 VideoJS 中没有自动执行此操作的插件,我可以使用什么命令行程序在 Ubuntu 上创建带有精灵图像的 VTT 文件?我要处理很多视频文件,所以手动操作是不可行的。
我的视频播放器:
<div class="video_player_js" style="width:auto; height:auto;">
<video id="video" class="vjs-16-9 video-js vjs-default-skin vjs-big-play-centered"
controls preload="auto" width="auto" height="auto"
data-setup='{"fluid": true}'>
<source src="test.mp4" type="video/mp4" />
<track kind="metadata" src="thumbnails.vtt"></track>
<p class="vjs-no-js">To view this video enabled Javascript.</a></p>
</video>
示例 vtt 文件:
WEBVTT
00:00:00.000 --> 00:00:03.000
thumbnails.jpg#xywh=0,0,120,68
00:00:03.000 --> 00:00:06.000
thumbnails.jpg#xywh=120,0,120,68
00:00:06.000 --> 00:00:09.000
thumbnails.jpg#xywh=240,0,120,68
很惊讶我没有得到一个 comment/answer。无论哪种方式,在花了好几天之后我都能找到一个可行的解决方案。起初我认为解决方案将使用 ffmpeg,但是虽然它确实有效,但速度非常慢。我最终找到了名为 mtn (Movie Thumbnailer) found here 的 linux 工具(在 Windows 中也可用)。该工具能够在大约 6 秒内从两小时的电影中创建精灵图像。我在 php 中使用 shell_exec 函数和 -v(详细)选项来解析每个缩略图的时间:
mtn -v -P -s 60 .jpg file.ext 2>&1
在那里,创建必要的 WebVTT 文件只需简单的逻辑、解析和数学运算。所有这些都是在 php 中本地完成的,除了必须将 mtn 与 shell_exec.
一起使用
这个解决方案效果很好,而且非常准确。唯一真正的问题是用户必须等待几秒钟才能观看视频。我目前正在寻找先加载视频的选项,在后台生成缩略图,并在准备好后将其合并到视频源中。
我希望这个解决方案可以帮助其他需要为其视频播放器动态生成缩略图的人。
事实上,有一个基于VideoJS 的缩略图显示插件是由BrightCove 完成的。在 GitHub 上查看此处:
https://github.com/brightcove/videojs-thumbnails/blob/master/example.html
这里的 base-poster 似乎更喜欢实时生成图像
并注意以下内容:
"The only real issue is that the user has to wait a couple of seconds before the video is ready to be watched."
除非我遗漏了什么,否则最好直接离线生成所需的 VTT 文件(缩略图信息)。
编辑:选择离线提取有额外的优势
强大的工具 'ffmpeg' 似乎是明智的选择。 (在评估了建议的不成熟 'mtn' 工具后,我拒绝了它,因为我无法阻止它被 skipping/omitting 拍摄。)
编辑:BrightCove 有很好的示例代码和解释,包括如何
使用视频更有效地做事 'sprites'。看这里:
https://support.brightcove.com/display-thumbnail-previews-plugin#Example
编辑:[我正计划开发这样的示例,并将更新
当我完成这项工作时,这个答案......敬请期待。]
编辑:我终于完成了为视频实现 'thumbnails' 的方法……它在这里:
https://weasel.firmfriends.us/Private3-BB/
我转到了 VideoJs (html5) 并且需要弄清楚如何为搜索栏生成缩略图。我试过使用 videojs-thumbnails,但是这需要有一个带有 sprite 图像的预加载 vtt 文件。我正在尝试找出一种自动加载常规 mp4 (h264) 文件缩略图的方法。 Flowplayer 能够用它自己的视频做到这一点,现在想弄清楚如何用 VideoJs 做到这一点。
我希望他们是我错过的能够做到这一点的插件,但还没有找到。我想出的最好办法是从 mp4 文件中提取缩略图,将其组合成精灵图像,并使用 #xywh 属性。
如果 VideoJS 中没有自动执行此操作的插件,我可以使用什么命令行程序在 Ubuntu 上创建带有精灵图像的 VTT 文件?我要处理很多视频文件,所以手动操作是不可行的。
我的视频播放器:
<div class="video_player_js" style="width:auto; height:auto;">
<video id="video" class="vjs-16-9 video-js vjs-default-skin vjs-big-play-centered"
controls preload="auto" width="auto" height="auto"
data-setup='{"fluid": true}'>
<source src="test.mp4" type="video/mp4" />
<track kind="metadata" src="thumbnails.vtt"></track>
<p class="vjs-no-js">To view this video enabled Javascript.</a></p>
</video>
示例 vtt 文件:
WEBVTT
00:00:00.000 --> 00:00:03.000
thumbnails.jpg#xywh=0,0,120,68
00:00:03.000 --> 00:00:06.000
thumbnails.jpg#xywh=120,0,120,68
00:00:06.000 --> 00:00:09.000
thumbnails.jpg#xywh=240,0,120,68
很惊讶我没有得到一个 comment/answer。无论哪种方式,在花了好几天之后我都能找到一个可行的解决方案。起初我认为解决方案将使用 ffmpeg,但是虽然它确实有效,但速度非常慢。我最终找到了名为 mtn (Movie Thumbnailer) found here 的 linux 工具(在 Windows 中也可用)。该工具能够在大约 6 秒内从两小时的电影中创建精灵图像。我在 php 中使用 shell_exec 函数和 -v(详细)选项来解析每个缩略图的时间:
mtn -v -P -s 60 .jpg file.ext 2>&1
在那里,创建必要的 WebVTT 文件只需简单的逻辑、解析和数学运算。所有这些都是在 php 中本地完成的,除了必须将 mtn 与 shell_exec.
一起使用这个解决方案效果很好,而且非常准确。唯一真正的问题是用户必须等待几秒钟才能观看视频。我目前正在寻找先加载视频的选项,在后台生成缩略图,并在准备好后将其合并到视频源中。
我希望这个解决方案可以帮助其他需要为其视频播放器动态生成缩略图的人。
事实上,有一个基于VideoJS 的缩略图显示插件是由BrightCove 完成的。在 GitHub 上查看此处:
https://github.com/brightcove/videojs-thumbnails/blob/master/example.html
这里的 base-poster 似乎更喜欢实时生成图像 并注意以下内容:
"The only real issue is that the user has to wait a couple of seconds before the video is ready to be watched."
除非我遗漏了什么,否则最好直接离线生成所需的 VTT 文件(缩略图信息)。
编辑:选择离线提取有额外的优势 强大的工具 'ffmpeg' 似乎是明智的选择。 (在评估了建议的不成熟 'mtn' 工具后,我拒绝了它,因为我无法阻止它被 skipping/omitting 拍摄。)
编辑:BrightCove 有很好的示例代码和解释,包括如何 使用视频更有效地做事 'sprites'。看这里: https://support.brightcove.com/display-thumbnail-previews-plugin#Example
编辑:[我正计划开发这样的示例,并将更新 当我完成这项工作时,这个答案......敬请期待。]
编辑:我终于完成了为视频实现 'thumbnails' 的方法……它在这里: https://weasel.firmfriends.us/Private3-BB/