Video.js 博客

Steve Heffernan2010-12-10

2.0.2 版本发布 - 字幕优化 + Leopard 上 Safari 的全屏修复

小型更新,包含一些修复和优化。重写了字幕解析器,使其更加优化并修复了一个字幕显示错误。针对在 Mac OSX 10.5 (Leopard) 上运行的 Safari 进行了检查,该浏览器不喜欢原生全屏,原因不明。因此改为触发全窗口模式。

完整列表

  • 功能:重写并优化了字幕代码。
  • 功能:防止音量范围超出 0 和 1。
  • 修复:Mac OS 10.5 (Leopard) 上 Safari 中的一个导致全屏功能失效的错误。

下载 2.0.2 版本

Steve Heffernan2010-11-22

2.0.0 版本发布 - 行为、回退 API 等。

重大更新。对当前用户来说最大的变化是控制条元素从使用无序列表改回使用 DIV。使用列表时存在很多样式冲突问题,这不应该是 div 的问题。所以如果你升级,别忘了同时升级你的样式表。

除此之外,许多代码被重组和模块化,以创建一个平台用于进一步扩展,例如自定义插件和控件。这个行为的概念被添加,因此你可以激活页面上的任何元素使其充当视频控件。例如,以下代码片段将使指定元素充当播放按钮,并在点击时播放视频。

myplayer.activateElement(myElement, "playButton");

下一个代码片段将使元素充当播放进度条,这意味着它将随着视频播放水平增长。

myplayer.activateElement(myElement, "playProgressBar");

更多相关文档即将推出。

现在,代码已为回退 Flash 播放器准备好 API。因此,如果你调用 myPlayer.play(),它将在 HTML5 和 Flash 版本(无论当前正在使用哪个)中触发播放。一个 flowplayer API 即将完成,其他流行的 Flash 播放器也将跟进。

最后,你可以通过修改 playerFallbackOrder 选项来改变回退顺序,它是一个播放器平台数组。所以如果你想让 Flash 优先,你会传递以下选项。

VideoJS.setupAllWhenReady({
  playerFallbackOrder: ["flash", "html5", "links"]
});

这也为添加其他平台(如 Quicktime)留下了空间。

接下来是 Flash 播放器 API,以及另一个我暂时还不想提及的酷炫功能。

完整列表

  • 功能:创建了行为元素添加行为的概念 - 功能:控件改回使用 div,以实现更便携的样式
  • 功能:创建了 playerFallbackOrder 数组选项。[“html5, flash, links”]
  • 功能:创建了 playerType 概念,用于初始化不同的平台
  • 功能:为 Android 添加了播放按钮
  • 功能:为 iPad 添加了加载指示器(非全屏)
  • 功能:拆分为多个文件,以便于开发
  • 功能:将 VideoJS& V 合并到同一个变量中以减少混淆
  • 修复:检查 m3u8 文件(Apple HTTP 流媒体)
  • 修复:捕获 Safari 似乎随机抛出的 localStorage 满载错误
  • 修复:拖动到末尾时不会触发 onEnded 事件

下载 2.0.0 版本

Steve Heffernan2010-11-19

让网站在 Safari 中为你提供 HTML5 视频

Daring Fireball 的 John Gruber 发表了一篇关于欺骗网站显示 HTML5 视频的酷文,即使它们声称只能播放 Flash。许多网站会告诉你它们需要 Flash,即使它们实际上支持 iOS 设备上的HTML5 视频

为了补充 Gruber的文章,有两个原因网站可能会这样做

  1. 它们试图保护其内容不被轻易下载,这是 HTML5 视频目前还做不好的。

  2. 它们假设每个使用浏览器的用户都安装了 Flash,并且只向 iOS 设备提供 HTML5 视频。

所以首先,这实际上是一种下载某些发布商可能不希望你下载的内容的技巧。我可能不应该发布这个,因为内容安全是 HTML5 视频仍然需要时间传播的主要原因之一。但就此目的而言,这真的不难发现。

其次,这是一种懒惰的回退实现。检查 Flash 是否受支持,如果不支持则回退到 HTML5,这非常容易,而不是检查特定的用户代理字符串。因此,对于使用 VideoJS 的网站,此方法将不起作用,但也没有必要,因为VideoJS 会适当地回退到 HTML5。

Gruber 已在 Safari 中禁用了 Flash 以获得更好的视频性能。这说明了很多问题。大多数人可能不会像他一样努力,但我知道他并非唯一一个。

Steve Heffernan2010-11-09

1.1.5 版本发布 - 使用 track 实现字幕,Android 修复及更多

  • 功能:切换到使用 track 方法设置字幕。现在与规范一致。
  • 功能:创建了播放器定义回退和回退顺序的概念
  • 修复:Android 播放错误。
  • 修复:大规模代码重组,使其更易于浏览

已将字幕切换为使用 HTML5 规范中定义的新 track 元素。现在你可以通过创建一个指向你的 WebSRT字幕源的 track 元素来添加字幕。

<video ...>
  <track kind="subtitles" src="../demo-subtitles.srt" srclang="en-US" label="English"></track>
</video>

需要闭合 track 标签,否则 Safari 会认为其他所有内容都是 track 的子元素,即使是自闭合的 track 标签也是如此。不确定为什么会这样,但这有点烦人。

此外还添加了 Android 播放修复。Android HTML5 视频还很不成熟。canPlayType 函数在 Android 上不返回任何内容,因此 VideoJS 会检查源是否为 mp4/m4v,并假设它会播放。然后 VideoJS 会为视频添加一个点击事件,这样当你触摸它时它就会播放。此外,Android 会显示海报图片,但没有迹象表明它是视频而不仅仅是图片。希望这将在下一个 Android 版本中得到改进。

除此之外,我对代码进行了大规模重组,所以如果你打算修改或贡献代码,应该会更容易浏览。

下载 1.1.5 版本

Steve Heffernan2010-11-06

1.1.4 版本发布 - CSS 加载指示器及更多

此版本中最显著的更新是一个加载指示器(加载动画),用于视频缓冲或跳转时。该指示器效果很好,但它受限于每个浏览器告知我们其当前正在做什么(通过触发事件)。到目前为止,该指示器在 Firefox 中效果最好。Safari/Chrome 在事件触发的时间和方式上不太一致。因此,我采用了一种更谨慎的方法,确保加载指示器被隐藏,而不是确保在播放器繁忙时始终显示加载指示器。这还有一些我不得不考虑的错误,比如当 Safari 抛出“等待”事件后,却没有其他事件告知我们它已不再等待。

该加载指示器图标是用 CSS3 特效(border-radius 和 transform)制作的。旋转动画目前是用一小段 JavaScript 创建的。在 webkit 浏览器中,动画可以用 CSS3 动画完成,但我宁愿保持在浏览器之间的一致性。该技术来自 Kilian Valkhof,最初由 Janez Troha (dz0ny) 集成到 VideoJS 中

其他功能和修复包括

  • 功能:添加了加载指示器。
  • 功能:改进了样式加载检查。
  • 功能:添加了 volume() 函数,用于通过播放器获取和设置音量。- 修复:修复了 Firefox 在视频结束后会在后台循环播放的问题。
  • 修复:Chrome 中的一个错误,显示海报但&如果设置 currentTime 过快则播放音频。
  • 修复:Safari 中的一个错误,在不需要时触发等待并显示加载指示器
  • 修复:更新为仅当存在无法播放的源且无 Flash 时显示链接。
  • 修复:如果播放按钮在播放后加载,它将不会隐藏的问题。

下载 1.1.4 版本

Steve Heffernan2010-10-19

1.1.3 版本发布

VideoJS 1.1.3 版本现已可用。

最显著的变化可能是在视频首次播放前使用一个大播放按钮,而不是显示控制条。这样做的主要原因实际上是 Safari 中的一个错误。如果你尝试在视频加载前调用视频上的除播放以外的任何函数,Safari 就会报错。有些人提到 Safari 中的全屏模式对他们不起作用,这很可能是他们遇到的情况。这只会发生在你没有预加载视频的情况下。你仍然可以通过 showControlsAtStart 选项先显示控件,但它不推荐。

其他功能和修复包括

  • 功能:用于调整播放器大小的宽度/高度函数
  • 功能:使首次点击&保持在进度条和音量上触发新值
  • 功能:使控件在鼠标悬停时不会隐藏
  • 修复:移除了导致 IE7 崩溃的尾随逗号
  • 修复:从全局作用域中移除了一些变量
  • 修复:将 document.onmousemove 更改为 eventListener 以防止冲突
  • 修复:为 FlowPlayer 演示对象添加了唯一 ID,以修复 FlowPlayer 的一个错误。感谢 @emirpprime。
  • 修复:Safari 在未加载视频上的错误

如果你有任何问题,请告诉我。

Steve Heffernan2010-10-12

Facebook 添加 HTML5 视频

What

在其他新的 HTML5 功能中,Facebook 为 iPhone 和 iPad 提供了 HTML5 视频播放器。他们说,在其他移动浏览器上,Flash 的表现优于 HTML5 的实现。这听起来有点令人沮丧,但 HTML5 视频仍然很年轻。

阅读完整文章

相比之下,请查看这段关于 HTML5 与 Flash 在 Mac 上的视频。剧透:HTML5 胜出。

Steve Heffernan2010-09-20

iPad 和 iPhone 视频海报修复(附赠 JavaScript 放置修复)

错误 #1 - 海报属性

如果你在使<source>标签时在 video 标签上包含 poster 属性,视频将不&在 iPad 和使用 iOS 3 的 iPhone 上运行.会看到一个损坏的播放按钮,或者根本没有播放按钮。特别是在 iPad 上,播放不稳定。有时它会工作,有时它将不会工作。这在 Video for Everybody 网站上有记载。

错误 #2 - JavaScript 在 Head 中

这很有趣……如果你在页面的 head 中包含 JavaScript,它会导致 iPad 上的播放中断(也不一致)。如果你将 JavaScript 移到页面底部,并且仍然包含样式表,iPad 将工作,但 iPhone 3 将不会工作。我第一次读到这个是在 No.inc 博客上的一篇文章中,后来在重新设计 VideoJS 网站时自己也遇到了。他们最初的解决方案是将 JS 放在页面底部,仅用于 iPad(有趣)。

苹果的 iOS4 似乎解决了 iPhone 上的这两个问题,但在 iOS4 普及到 iPad 以及世界上所有人都升级他们的设备之前,我们不得不处理这个问题。

iOS 3 修复

问题似乎是某种竞态条件,导致设备出现故障。对我来说,解决这两个问题的办法是直接将可播放的源添加到视频标签,并告诉视频加载(全部通过 JavaScript)。

已将所有这些添加到 VideoJS 1.1.2,但这里是它工作原理的基本介绍。

var video = document.getElementById("your_video");
var children = video.children;
for (var i=0,j=children.length; i&lt;j; i++) {
  if (children[i].tagName.toUpperCase() == "SOURCE") {
    var canPlay = video.canPlayType(children[i].type);
    if(canPlay == "probably" || canPlay == "maybe") {
      video.src = children[i].src;
      video.load();
      break; // or return or whatever
    }
  }
}

因此,遍历源元素,找到兼容的那个,并将其源添加到视频 src。然后触发视频的 load() 函数。

这似乎解决了这两个问题。这不会使海报显示在任何设备上。它只是使视频可播放。有时你会看到它闪烁控制条,然后返回到大播放按钮。

任何反馈都将不胜感激。

我们行动起来,苹果,把 iOS4 推送给所有人!

Steve Heffernan2010-09-15

VideoJS 兼容 IE9

经过初步测试,VideoJS 可以与新的 Internet Explorer 9 预览版配合使用。这是个好消息,考虑到控件的 CSS 布局以及 IE 的通用特性,这有点令人惊讶。其他 VideoJS 网站布局似乎会中断,但目前只要播放器能工作我就满意了。

如果你发现有任何不同,请告诉我(并附上任何可能有用的信息)。

Steve Heffernan2010-09-15

全新的 VideoJS 网站(现在拥有更多 HTML5 功能)!

我曾告诉自己,当网站访问量达到 100,000 次时,我就会重新设计它。现在这个数字已经过去了,所以它就在这里了

我也借此机会开发了一个基于 HTML5 的网站,使用了像 headerfootersection 这样的标签。我是在最近流行的 HTML5 Boilerplate 之上构建的。实际上,我首先为 HTML5 Boilerplate 构建了一个 WordPress 主题,以防你也对此感兴趣。

我还在整个过程中使用了一些有趣的 CSS 技巧。其中之一是页面顶部的细彩色条。调整窗口大小,看看它!

我还在这个博客和 Twitter 账户,我将在那里发布 VideoJS 的更新以及一般的 HTML5 视频新闻。会发布 VideoJS 的更新以及一般的 HTML5 视频新闻。

上一页