使用 video.js 开发 HTML5 视频页面

摘要:
时间2015-05-1317:11:58 GISGuy原件http://thegisguy.tk/html5-video-using-video-js/主题视频。jsHTML5使用视频Js编写一个HTML5视频播放器,只需几个简单的步骤即可在微信和QQ内置浏览器中工作。HTML5标签看起来很简单,但在不同的设备上使用时存在很多问题。原因是许多设备强迫自己的视频播放器播放HTML5视频
时间 2015-05-13 17:11:58The GIS Guy

使用 video.js 简单几步编写一个可以在微信、QQ内置浏览器中正常工作的 HTML5 视频播放器。

HTML5 标签看似简单,但在不同设备上使用时却问题不断,原因是很多设备强制使用自身的视频播放器来播放 HTML5 视频。使用第三方组件 video.js 可以在一定程度上克服这个问题。

初始化 video.js

编写 HTML 页面:

<<span class="hljs-name">head>  
        <<span class="hljs-name">meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <<span class="hljs-name">title></<span class="hljs-name">title>
        <<span class="hljs-name">link href="include/video-js/video-js.css" rel="stylesheet">
        <<span class="hljs-name">script src="video.js"></<span class="hljs-name">script>
        <<span class="hljs-name">script>
                videojs.options.flash.swf = "include/video-js/video-js.swf"
        </<span class="hljs-name">script>
</<span class="hljs-name">head>  
<<span class="hljs-name">body>  
<<span class="hljs-name">video id="video" class="video-js vjs-default-skin vjs-big-play-centered"  
        controls preload="auto" width="100%" height="100%"
        poster="img/pure-black.jpg" data-setup=''>
        <<span class="hljs-name">source src="video/video.mp4" type='video/mp4' />
        <<span class="hljs-name">source src="video/video.webm" type='video/webm' />
        <<span class="hljs-name">source src="video/video.ogv" type='video/ogg' />
 <<span class="hljs-name">p class="vjs-no-js">播放视频需要启用 JavaScript,推荐使用支持HTML5的浏览器访问。</<span class="hljs-name">p>
</<span class="hljs-name">video>  
</<span class="hljs-name">body>  

与官方教程相比,这里为 video 元素额外添加了 vjs-big-play-centered 类,让播放按钮显示在视频的正中间(默认在左上角)。 controls 表示自动添加播放控件。加上 preload="auto" 可以让页面加载完成后立即开始加载视频,如果设置为 preload="meta" 则只加载视频元数据。

中声明 ,可以让页面在高分辨率的手机上显示正确的尺寸,防止因为屏幕像素高而使得页面元素变得很小。

虽然页面中已经指定 高度为100%,但此时视频控件高度仍然为0,可以用下面的 CSS 样式让视频控件全屏。

html, body {  
    width: 100%;
    height: 100%;
}

为适配不同内核的浏览器,需要同时提供 .mp4、.ogv、.webm 三种格式的视频,但 OS X 下没有找到好用的免费转换器可以同时转换成 .mp4、.ogv 和 .webm 三种格式。miro 虽然号称免费开源,但是不捐钱无法得到下载链接……如果视频不大,推荐使用 converter.com 的在线转换器。

可以看看上面代码在浏览器中的效果:

使用 <wbr>video.js <wbr>开发 <wbr>HTML5 <wbr>视频页面

事件响应

video.js 对 HTML5 视频的事件进行了封装,下面的代码演示了如何给视频添加事件响应:

var player = videojs('video');  
// 检测播放时间
player.on('timeupdate', function () {  
        console.log('当前播放时间:' = player.currentTime());
}
});
// 开始或恢复播放
player.on('play', function() {  
        console.log('开始/恢复播放');
});
// 暂停播放
player.on('pause', function() {  
        console.log('暂停播放');
});

视频播放控件最常用的事件是 'play','pause','ended',以及'timeupdate'。

适配iOS、安卓设备

正确处理播放结束事件

在设备实测中可以发现,上一节中提到的 'ended' 事件在安卓设备上并没有正确触发。因此,需要通过 'timeupdate' 事件判断视频是否已播放完毕:

player.on('timeupdate', function () {  
    // 如果 currentTime() === duration(),则视频已播放完毕
    if (player.duration() != 0 && player.currentTime() === player.duration()) {
            // 播放结束
        }
    });

与iOS设备不同,安卓设备中视频还未加载的情况下 player.duration()player.currentTime() 均为0,因此需要通过 player.duration() != 0 确保视频信息已加载成功 ,以免在页面刚刚加载的时候就错误地认为视频播放已经结束。

隐藏移动设备自动添加的播放按钮

移动设备上的浏览器检测到 HTML5 视频时,会自动加上播放按钮,然而在大多数情况下,默认的播放按钮点击之后并不能正常播放视频。(为什么要采用第三方组件来写视频控件的原因。)

另外,video.js 本身已经带有播放按钮,因此需要将设备自动添加的播放按钮隐藏。设置下面的 CSS 样式:

video::-webkit-media-controls {  
    display:none !important;
}

到此为止,一个适配了桌面端与移动端,并用能在QQ、微信浏览器中正常打开视频的页面就完成了。

免责声明:文章转载自《使用 video.js 开发 HTML5 视频页面》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇拦截器中获取不到controller注解问题difflib模块文件内容差异对比下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

html5对密码加密

今天找了几个关于对html5的密码加密的方法,仅供参考 1、base64加密:在页面中引入base64.js文件,调用方法为: <html> <head> <meta charset="utf-8"> <title>base64加密</title> <script type=...

eclipse没有server选项解决方法

eclipse是是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 它使用频率十分高,然而当使用它配置weblogic的时候,经常会发现一个重要的问题就是打开eclipse之后没有了server选项,那么该如何解决这个问题呢?        下面将详细介绍eclipse中servers不...

游戏开发之UDK引擎介绍和模型导入

2014-09-18 10:01:3  UnrealDevelopmentKit(虚幻引擎开发工具包)。简称UDK,是一套强大并免费的游戏引擎开发套件。能够用来制作高端的3D游戏或者场景展示。只是,假设你要制作商业游戏,而且获得不错的收益,UDK官方会乐于找你分享所得。*UDK直接支持针对苹果Iphone平台的游戏开发。...

离线搭建安卓环境 adt

1、下载SDK。到安卓官网http://developer.android.com/sdk/index.html 下载SDK,选这个如图1,因为这个是adt-bundle-windows-x86的压缩包,里面包含eclipse和SDK,eclipse它已经集成好了ADT。其实这个包下载的并不是很全,不全的后面还是要在线下载,但是相对的时间会短点!(这也是后...

Android Studio AVD中文输入法安装

  我创建了两个AVD,api21与api24,发现均没有中文输入法,上网查询说将键盘选择为“谷歌拼音输入法”,可我的输入法中没有此选项,于是自己决定安装一个 输入法的.apk   首先,在avd中下载,下载成功,无法安装(此时下载的是百度输入法);然后在电脑上下载了搜狗输入法与QQ输入法,利用ADB进行安装 ,报  Failure [INSTALL_FA...

30个高质量并且免费的Android图标【Android Icon素材】

有 时候你可能不喜欢默认的应用程序图标,取而代之的是一些个性化的图标。实际上对于Android设备的用户来说,改变桌面图标是可能的。你仅仅需 要一些应用程序比如LauncherPro,GO Launcher EX, Apex Launcher, Nova Launcher等来帮你完成图标的替换。网上有很多的ICON可以供你选择和挑选,但是它们过于零散,找...