Javascript Viideo.JS Thumnails:uncaughttypeerror:无法读取属性';src&x27;未定义的

Javascript Viideo.JS Thumnails:uncaughttypeerror:无法读取属性';src&x27;未定义的,javascript,html,video,undefined,video.js,Javascript,Html,Video,Undefined,Video.js,我正在尝试破解video.js html5播放器,以便在鼠标悬停时显示时间线缩略图(就像yoube上的一样)。我在这里遇到了这个插件: 这是可行的,但我的主要问题是我的视频长度不同,而且很多都在服务器上(基本上,这是一个成人网站)。 所有的视频缩略图都是在一个文件夹中生成的,总共有19个 我修改了原始代码,因此所有19个Thumnail都可以在场景中使用。该网站使用smarty。 从这里开始: video.thumbnails({ 0: { src: 'http://example.

我正在尝试破解video.js html5播放器,以便在鼠标悬停时显示时间线缩略图(就像yoube上的一样)。我在这里遇到了这个插件:

这是可行的,但我的主要问题是我的视频长度不同,而且很多都在服务器上(基本上,这是一个成人网站)。 所有的视频缩略图都是在一个文件夹中生成的,总共有19个

我修改了原始代码,因此所有19个Thumnail都可以在场景中使用。该网站使用smarty。 从这里开始:

video.thumbnails({
  0: {
    src: 'http://example.com/thumbnail1.png',
    width: '120px'
  },
  5: {
    src: 'http://example.com/thumbnail2.png'
  }
});
为此:

{php}
global $video, $tmbint;
echo "<script>";
echo "video.thumbnails({";

for($i = 0; $i <= 19; $i++) {

    if($i == 0) { echo "0: { src: '/media/videos/tmb/".$video['VID'].'/'.($i+1).".jpg', style: { width: '120px', left: '-60px' }  }"; }
          else  { echo $i * $tmbint.": { src: '/media/videos/tmb/".$video['VID'].'/'.($i).".jpg', style: { width: '120px', left: '-60px' }  }"; }
    if($i != 19) echo ", \n";
}


echo "});";

echo "</script>";

{/php}
然后我把它变成这样:

 mouseTime = Math.floor((left - progressControl.el().offsetLeft) / progressControl.width() * duration);

  unit = (progressControl.width()) / 20;
  moffset = left;

  for (time in settings) {
    if (mouseTime > time) {
      active = Math.max(active, time);
    }
  }

  active = Math.floor(moffset / unit) * Math.floor(duration / 20);

  setting = settings[active];
  if (setting.src && img.src != setting.src) {
    img.src = setting.src;
  }
  if (setting.style && img.style != setting.style) {
    extend(img.style, setting.style);
  }

  width = getVisibleWidth(img, setting.width || settings[0].width);
  halfWidth = width / 2

然而,我在标题中发现了错误。前10秒是可以的,但是当尝试移动到第二个缩略图时,错误会迅速消失,依此类推。抱歉发了这么长的帖子,这是我第一次来这里。有什么想法吗?

哇!我发现了错误。$tmbint为零。我在一个单独的PHP文件中添加了这一行:

$tmbint = @floor($video['duration'] / 20);

现在它可以工作了。

看起来您正在使用的[active]数组的索引可能超出范围…如果我将其减少到1,它是好的,但在整个序列中只显示一个缩略图。如果我将其调整为2,那么它会将缩略图应用到视频的一半,并再次抛出错误。
$tmbint = @floor($video['duration'] / 20);