videojs 柔情只为你懂 2021-12-11 06:31 336阅读 0赞 ## 转自:[https://www.awaimai.com/2053.html][https_www.awaimai.com_2053.html] ## # # # # ## 1 初始化 ## **Video.js**初始化有两种方式。 ### 1.1 标签方式 ### 一种是在`<video>`标签里面加上`class="video-js"`和`data-setup='{}'`属性。 **注意,两者缺一不可。** 刚开始的时候我觉得后面的值为空对象`{}`,不放也行, 导致播放器加载不出来,后来加上来就可以了。 ### 1.2 JS方式 ### 另外一种初始化 **video.js** 的方法是通过JS,格式: var player = videojs('my-player'); 这样有个要求,就是不能配置`data-setup`,并且需要传入`<video>`的`id`。 当然,如果不想一个个初始化,可以这样: (function(){ var videos = document.getElementsByTagName('video'); for(i=0; i<videos.length; i++) { var video = videos[i]; if(video.className.indexOf('video-js') > -1) { videojs(video.id).ready(function(){ }); } } })(); ## 2 播放按钮居中 ## **video.js**默认的播放按钮在左上角,应该是 video.js 开发人员认为放中间会遮挡内容,所以没放中间。 不过我们常见的一般都在中间,比较符合习惯。 这是可以通过参数修改的,在`<video>`标签中加入`vjs-big-play-centered`类,就可以了。 像这样: class="video-js vjs-big-play-centered" ## 3 支持<audio>音乐标签 ## **video.js** 4.9开始支持`<audio>`标签,与video不同的是:**播放audio时封面不会消失。** 但是上面的播放框还是一直在的,配置方式和`<video>`标签一样,也必须要配置`data-setup`参数。 ## 4 禁止在iPhone safari中自动全屏 ## 方法如下,在`<video>`标签中加入`playsinline`参数, <video playsinline ></video> 注意,在iOS10之前用的是`webkit-playsinline`。 ## 5 暂停时显示播放按钮 ## **video.js** 在未播放时,会显示一个大的播放按钮,上面我们提到如何让他居中。 那么,如何在视频暂停时也显示这个播放按钮呢? ![QQ_E6_88_AA_E5_9B_BE20170308103219.png][] 有很多用JS的解决办法,感觉都挺麻烦的。 其实用CSS就可以搞定了: .vjs-paused .vjs-big-play-button, .vjs-paused.vjs-has-started .vjs-big-play-button { display: block; } 是不是很轻便很简单 :) ## 6 播放按钮变○圆形 ## **video.js** 默认的播放按钮是**圆角矩形**, 我们一般更熟悉播放按钮为圆形的: ![unnamed-file.png][] 那么怎么改呢?还是用CSS来解决。 .video-js .vjs-big-play-button{ font-size: 2.5em; line-height: 2.3em; height: 2.5em; width: 2.5em; -webkit-border-radius: 2.5em; -moz-border-radius: 2.5em; border-radius: 2.5em; background-color: #73859f; background-color: rgba(115,133,159,.5); border-width: 0.15em; margin-top: -1.25em; margin-left: -1.75em; } /* 中间的播放箭头 */ .vjs-big-play-button .vjs-icon-placeholder { font-size: 1.63em; } /* 加载圆圈 */ .vjs-loading-spinner { font-size: 2.5em; width: 2em; height: 2em; border-radius: 1em; margin-top: -1em; margin-left: -1.5em; } 因为原来居中的时候宽度和高度改变了,所以`margin`的值也要相应改变 ## 7 点击屏幕播放/暂停 ## 这个是视频播放的时候用得较多的功能,解决方法如下。 .video-js.vjs-playing .vjs-tech { pointer-events: auto; } `pointer-events`是CSS的一个属性,用来控制鼠标的动作,具体可参考《[CSS里的pointer-events属性][CSS_pointer-events]》。 ## 8 重载视频文件 ## 总有那么一些情形,我们需要 video.js 重新载入视频文件。 比如,立即播放刚上传的文件。 例如这样的标签: <video id="example_video"> <source id="videoMP4" src="1.mp4" /> </video> <button id="reload">重载</button> 在**video.js**中,用现成的js方法就可以实现: var video = document.getElementById('example_video'); var source = document.getElementById('videoMP4'); $("#reload").click(function() { video.pause() source.setAttribute('src', '2.mp4'); video.load(); video.play(); }); 或者: var video = document.getElementById('example_video'); $("#reload").click(function() { video.pause() video.setAttribute('src', '2.mp4'); video.load(); video.play(); }); ## 9 进度显示当前播放时间 ## **video.js** 默认倒序显示时间,也就是视频播放的剩余时间。 要显示当前的播放时间,以及总共视频时长,加2行CSS解决: .video-js .vjs-time-control{display:block;} .video-js .vjs-remaining-time{display: none;} **参考地址:** 1. 1. [http://codepen.io/davatron5000/pen/LskGD][http_codepen.io_davatron5000_pen_LskGD] 2. [Video.js 4.9 - Now <audio> can join the party!][Video.js 4.9 - Now _audio_ can join the party] 3. [在网站中嵌入VideoJs视频播放器][VideoJs] 4. [如何禁止 iPhone Safari 视频自动全屏?][iPhone Safari] 5. [New <video> Policies for iOS][New _video_ Policies for iOS] 6. [Video.js Show play button only when paused][] 7. [Reloading video.js player after changing source using jquery][] 8. [Show the current time of the video, instead of the remaining time on videojs][Show the current time of the video_ instead of the remaining time on videojs] video.js是一款基于HTML5的网络视频播放器。它支持HTML5和Flash视频,以及YouTube和Vimeo(通过插件)。支持在桌面和移动设备上播放视频。这个项目从2010年中期开始,现已经在40多万个网站上使用。 # 快速开始 # 感谢[Fastly][]的杰出人士,任何人都可以使用免费的CDN托管版Video.js。将这些标签添加到您的文档中`<head>` <link href="//vjs.zencdn.net/5.19/video-js.min.css" rel="stylesheet"> <script src="//vjs.zencdn.net/5.19/video.min.js"></script> 有关要使用的最新版本的video.js和URL,请查看我们网站上的[入门][Link 1]页面。 在`vjs.zencdn.net`CDN托管版本的Video.js中,我们包含一个[精简的Google Analytics(分析)像素][Google Analytics],用于跟踪从CDN加载的随机抽样(当前为1%)的玩家。这使我们能够(粗略地)看到哪些浏览器正在使用,以及其他有用的指标,如操作系统和设备。如果您想停用分析功能,则可以在通过免费CDN添加Video.js之前简单包含以下全局内容: <script>window.HELP_IMPROVE_VIDEOJS = false;</script> 或者,您可以通过从[npm][]获取Video.js ,从[GitHub发布][GitHub]下载或通过[unpkg][]或[CDNjs等][unpkg]其他JavaScript CDN获取Video.js。这些版本不包括Google Analytics跟踪。 <!-- unpkg --> <link href="https://unpkg.com/video.js/dist/video-js.css" rel="stylesheet"> <script src="https://unpkg.com/video.js/dist/video.js"></script> <!-- cdnjs --> <link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.3.3/video-js.css" ref="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/6.3.3/video.js"></script> 接下来,使用video.js与创建`<video>`元素一样简单,但是有一个附加的`data-setup`属性,该属性必须有个值`{}`,可以包含任何Video.js [选项][Link 2] \- 只要确保它包含有效的JSON! <video id="my-player" class="video-js" controls preload="auto" poster="//vjs.zencdn.net/v/oceans.png" data-setup='{}'> <source src="//vjs.zencdn.net/v/oceans.mp4" type="video/mp4"></source> <source src="//vjs.zencdn.net/v/oceans.webm" type="video/webm"></source> <source src="//vjs.zencdn.net/v/oceans.ogv" type="video/ogg"></source> <p class="vjs-no-js"> To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank"> supports HTML5 video </a> </p> </video> 当页面加载时,Video.js会找到这个元素并自动设置一个播放器。 如果你不想使用自动设置,你可以忽略`data-setup`属性,并用`videojs`函数初始化`<video>`元素. 该videojs函数还接受一个options对象和一个回调,当播放器准备好时,回调函数将被调用。 var options = {}; var player = videojs('my-player', options, function onPlayerReady() { videojs.log('Your player is ready!'); // In this context, `this` is the player that was created by Video.js. this.play(); // How about an event listener? this.on('ended', function() { videojs.log('Awww...over so soon?!'); }); }); ## language ## videojs使用json对象来描述语言,对象的键为英语,对应的值是目标语言。翻译在lang/目录下,文件名称是`标准语言代码`,例如es.json是西班牙语. 除了video.js提供的独立脚本,API支持通过addLanguage方法手动定义新语言。其需要两个参数 `标准语言代码`, `语言定义对象`: videojs.addLanguage('es', { Play: 'Reproducción', Pause: 'Pausa', 'Current Time': 'Tiempo reproducido', 'Duration Time': 'Duración total', 'Remaining Time': 'Tiempo restante', ... }); 如果对象包含以前翻译过的字符串,addLanguage()将覆盖现有的翻译。然而,已经本地化的文本将不会在生成之后更新。 ## 使用 ## videojs的有多个翻译在lang目录下,为需要支持的每种语言添加lang脚。 <script src="//example.com/path/to/video.min.js"></script> <script src="//example.com/path/to/lang/es.js"></script> 除了向Video.js本身提供语言外,`Player`还可以通过[以下`languages`选项][languages]为各个实例提供自定义语言支持: // Provide a custom definition of Spanish to this player. videojs('my-player', { languages: { es: { Play: 'Reproducir' } } }); ### 设置播放器语言 ### 播放器使用的语言可以通过language选项来设置 // Set the language to Spanish for this player. videojs('my-player', { language: 'es' }); 该播放器的语言方法可用于在实例化后设置语言('es')。但是,这通常是没有用的,因为它不更新已经存在的文本。 ### 确定播放器语言 ### 播放器语言通过以下优先级确定: * 选项中指定的语言 * 在播放器元素上由`lang`属性指定的 * 由最近的带lang属性的父元素指定的语言,向上包括<html>元素。 * 浏览器语言偏好设置;如果配置多个,则使用第一个语言。 * 英语 ### 内部语言选择 ### 语言代码被认为是不区分大小写的(例如`en-US`== `en-us`)。 如果没有与子代码(例如`en-us`)匹配的语言代码,则使用可用的匹配的主代码(例如en)。 videojs使用技巧 [https://www.awaimai.com/2053.html][https_www.awaimai.com_2053.html 1] 转自:https://www.jianshu.com/p/16fa00a1ca8e [https_www.awaimai.com_2053.html]: https://www.awaimai.com/2053.html [QQ_E6_88_AA_E5_9B_BE20170308103219.png]: /images/20211211/bf1f5c23b93f49e6b0532ef158aacc59.png [unnamed-file.png]: /images/20211211/28af4f97a87e469384d3c621fd0c2715.png [CSS_pointer-events]: http://www.webhek.com/post/pointer-events.html [http_codepen.io_davatron5000_pen_LskGD]: http://codepen.io/davatron5000/pen/LskGD [Video.js 4.9 - Now _audio_ can join the party]: http://blog.videojs.com/Video-js-4-9-Now-can-join-the-party/ [VideoJs]: http://www.cnblogs.com/meelo/p/4304536.html [iPhone Safari]: https://www.zhihu.com/question/21094425 [New _video_ Policies for iOS]: https://webkit.org/blog/6784/new-video-policies-for-ios/ [Video.js Show play button only when paused]: http://stackoverflow.com/questions/22887719/video-js-show-play-button-only-when-paused [Reloading video.js player after changing source using jquery]: http://stackoverflow.com/questions/31663305/reloading-video-js-player-after-changing-source-using-jquery [Show the current time of the video_ instead of the remaining time on videojs]: https://stackoverflow.com/questions/15324061/show-the-current-time-of-the-video-instead-of-the-remaining-time-on-videojs [Fastly]: https://link.jianshu.com?t=http%3A%2F%2Fwww.fastly.com%2F [Link 1]: https://link.jianshu.com?t=http%3A%2F%2Fvideojs.com%2Fgetting-started%2F [Google Analytics]: https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fvideojs%2Fcdn%2Fblob%2Fmaster%2Fsrc%2Fanalytics.js [npm]: https://link.jianshu.com?t=http%3A%2F%2Fvideojs.com%2Fgetting-started%2F%23download-npm [GitHub]: https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fvideojs%2Fvideo.js%2Freleases [unpkg]: https://link.jianshu.com?t=https%3A%2F%2Funpkg.com%2F [Link 2]: https://link.jianshu.com?t=https%3A%2F%2Fgithub.com%2Fvideojs%2Fvideo.js%2Fblob%2Fmaster%2Fdocs%2Fguides%2Foptions.md [languages]: https://link.jianshu.com?t=https%3A%2F%2Fdocs.videojs.com%2Ftutorial-options.html%23languages [https_www.awaimai.com_2053.html 1]: https://link.jianshu.com?t=https%3A%2F%2Fwww.awaimai.com%2F2053.html
还没有评论,来说两句吧...