视频播放插件 Video.js 使用和个版本下载

16 篇文章 0 订阅
10 篇文章 0 订阅

来源:https://blog.csdn.net/zhanghao143lina/article/details/79457035





Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。(要支持ie低版本请下载5.4.3版 )点击进入官网

下载

各个版本下载

使用

引入文件

      
      
  1. <link href="video-js.css" rel="stylesheet" type="text/css">
  2. <script src="video.js"></script>

:一般我使用时会把下载的包整个拷贝到项目的plugin目录下,一方面可以方便以后查看Demo的使用方法,另一方面也避免内部文件之间引用的路径问题。

设置flash路径,Video.js会在不支持html5的浏览中使用flash播放视频文件。


      
      
  1. <script>
  2. videojs.options.flash.swf = "video-js.swf" ;
  3. </script>
HTML

      
      
  1. <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264"
  2. data-setup = "{}" >
  3. <source src="http://视频地址格式1.mp4" type='video/mp4' />
  4. <source src="http://视频地址格式2.webm" type='video/webm' />
  5. <source src="http://视频地址格式3.ogv" type='video/ogg' />
  6. <track kind="captions" src="demo.captions.vtt" srclang="en" label="English"> </track> <!-- Tracks need an ending tag thanks to IE9 -->
  7. <track kind="subtitles" src="demo.captions.vtt" srclang="en" label="English"> </track> <!-- Tracks need an ending tag thanks to IE9 -->
  8. </video>

设置自动播放将下面代码加到html中代码后面


      
      
  1. <script type="text/javascript">
  2. var myPlayer = videojs( 'example_video_1' ); // video 标签中的ID
  3. myPlayer.ready( function() {
  4. myPlayer.play(); // 调用播放函数
  5. });
  6. </script>

默认情况下,大的播放按钮是被定为在左上角的,这样就不会覆盖视频内容。如果你想让这个播放按钮居中,你可以给你的 video 标签添加额外的 vjs-big-play-centered样式,比如:


      
      
  1. <video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered"
  2. controls preload = "auto" width = "640" height = "264"
  3. data-setup = '{"example_option":true}' >
  4. ...
  5. </video>

如果你还对播放按钮样式不满意可重新定义video-js .vjs-big-play-button{/这里的样式重写/}

为动态加载的 HTML 元素设置 Video.js

如果你的 web 页面或者应用是动态加载 video 标签的(ajax,appendChild,等等),这样在页面加载后这个元素是不存在的,那么你会想要手动设置播放器而不是依靠 data-setup 属性,做法如下:

  1. 将 data-setup 属性从 video 标签中移除掉,避免播放器混乱。
  2. 运行下面的 javascript

      
      
  1. videojs("example_video_1", {}, function(){
  2. // Player (this) is initialized and ready.
  3. });
  • videojs 方法中的第一个参数是你的 video 标签的 ID,用你自己的代替。
  • 第二个参数是一个选项对象。它允许你像设置 data-setup 属性一样设置额外的选项。
  • 第三个参数是一个 ‘ready’ 回调。一旦 Video.js 初始化完成后,就会触发这个回调。
注意

在动态加载HTML进行初始化player对象的时候,很容易出现播放界面混乱的情况,我做的时候就出现了比如播放条错位,缺少播放时间和全局时间的显示,有白点等问题。遇到这种情况先检查加载顺序,如果不是的话也不要慌,在浏览器里找到混乱的元素,自己进行调试,把修改的 css 样式放到 HTML 的 <style>块中,不要修改插件的 CSS 文件,因为是在 js 加载的时候更改的样式,要在自己的页面里修改,如果这时候修改还是没有起作用,css 属性后面用!important来强制提高样式加载的优先级。

比如,如果页面有多余元素(例如白点),浏览器调试找到,css 设置display:none;当页面元素错位(例如进度条、声音图标错位),用margin来调节合适位置;当页面元素缺失,比如缺少播放时间、剩余时间等,在浏览器 F12 调试找到对应元素,设置display:block

我做的项目中的使用效果

常用方法
  • 播放:myPlayer.play();
  • 暂停:myPlayer.pause();
  • 获取播放进度:var whereYouAt = myPlayer.currentTime();
  • 设置播放进度:myPlayer.currentTime(120);
  • 视频持续时间,加载完成视频才可以知道视频时长,且在flash情况下无效: var howLongIsThis = myPlayer.duration();
  • 缓冲,就是返回下载了多少: `var whatHasBeenBuffered = myPlayer.buffered();
  • 百分比的缓冲: var howMuchIsDownloaded = myPlayer.bufferedPercent();
  • 声音大小(0-1之间): var howLoudIsIt = myPlayer.volume();
  • 设置声音大小: myPlayer.volume(0.5);
  • 取得视频的宽度: var howWideIsIt = myPlayer.width();
  • 设置宽度:myPlayer.width(640);
  • 获取高度: var howTallIsIt = myPlayer.height();
  • 设置高度:: myPlayer.height(480);
  • 一步到位的设置大小:myPlayer.size(640,480);
  • 全屏: myPlayer.enterFullScreen();
  • 离开全屏 : myPlayer.enterFullScreen();
添加事件

      
      
  1. durationchange
  2. ended //播放结束
  3. firstplay
  4. fullscreenchange
  5. loadedalldata
  6. loadeddata
  7. loadedmetadata
  8. loadstart
  9. pause //暂停
  10. play //播放
  11. progress
  12. seeked
  13. seeking
  14. timeupdate
  15. volumechange
  16. waiting
  17. resize inherited
  18. var myFunc = function(){
  19. // Do something when the event is fired
  20. };
事件绑定

      
      
  1. myPlayer.on("ended", function(){
  2. console.log("end", this.currentTime());
  3. });
  4. myPlayer.on("pause", function(){
  5. console.log("pause")
  6. });
删除事件

      
      
  1. myPlayer.removeEvent(“eventName”, myFunc);
页面中有多个视频

一个页面中有多个视频,需要点击后触发bootstrap 的模态窗,再弹出视频

HTML
<a videohref="http://xxx.mp4" class="video_link"></a> 
js

      
      
  1. $(<span class="hljs-string"><span class="hljs-string">".video_link"</span></span>).click(<span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span class="hljs-function">(</span><span class="hljs-params"></span><span class="hljs-function"><span class="hljs-params"></span>) </span></span>{</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> <span class="hljs-keyword"><span class="hljs-keyword">var</span></span> myPlayer = videojs(<span class="hljs-string"><span class="hljs-string">'my-video'</span></span>);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> <span class="hljs-keyword"><span class="hljs-keyword">var</span></span> videoUrl = $(<span class="hljs-keyword"><span class="hljs-keyword">this</span></span>).attr(<span class="hljs-string"><span class="hljs-string">"videohref"</span></span>);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> videojs(<span class="hljs-string"><span class="hljs-string">"my-video"</span></span>, {}, <span class="hljs-function"><span class="hljs-keyword"><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span class="hljs-function">(</span><span class="hljs-params"></span><span class="hljs-function"><span class="hljs-params"></span>) </span></span>{</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> <span class="hljs-built_in"><span class="hljs-built_in">window</span></span>.myPlayer = <span class="hljs-keyword"><span class="hljs-keyword">this</span></span>;</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> $(<span class="hljs-string"><span class="hljs-string">"#mymoda .video-con #my-video source"</span></span>).attr(<span class="hljs-string"><span class="hljs-string">"src"</span></span>, videoUrl);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> myPlayer.src(videoUrl);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> myPlayer.load(videoUrl);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> myPlayer.play();</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> });</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> $(<span class="hljs-string"><span class="hljs-string">".click-modal"</span></span>).click();</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript">});</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"><span class="hljs-comment"><span class="hljs-comment">// 模态窗消失时,关闭视频 </span></span></code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript">$('#mymoda').on('hidden.bs.modal', function() {
  2. myPlayer.pause();
  3. });

场景使用补充

场景1:实时监控

在当需要实时监听视频进度的时候,比如我遇到的场景是课程视频有试听课,只能试听这个视频的前多少分钟。这个时候,不管是普通播放还是拖动进度条都需要实时监听播放的时间进度,判断是否大于试听时间,进行对应操作。

代码片段如下:


      
      
  1. // 判断试听时间
  2. if(b){
  3. window.loopMarquee = setInterval(function(){
  4. if(player.currentTime() >= listenTime){
  5. player.pause();
  6. $(<span class="hljs-string"><span class="hljs-string">".gobuy"</span></span>).fadeIn(<span class="hljs-number"><span class="hljs-number">200</span></span>);</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> }</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript"> },<span class="hljs-number"><span class="hljs-number">500</span></span>) <span class="hljs-comment"><span class="hljs-comment">// 设置每500秒查询一次</span></span></code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript">}</code></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"></div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre><h4>场景2: 记录观看历史,下次从上次位置打开</h4><p><strong>思路:</strong>在离开页面时触发得到当前播放时间,存到数据库,下一次加载时从数据库取,如果有<code>history_time</code>则用<code>player.currentTime(historyTime)</code>,没有的话,正常从头播放。</p><pre onclick="hljs.copyCode(event)"><code class="language-javascript hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><code class="javascript">$( window ).unload(function() {
  7. getVideoTime();
  8. });


作者:丹青笔
链接: https://www.jianshu.com/p/9414886a8963
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
video.js 是一款开源的 HTML5 视频播放插件使用简单强大。下面是 video.js使用教程大全: 1. 引入 video.js 文件:首先,在 HTML 页面中引入 video.js 的文件。可以使用 CDN 的方式引入,也可以将文件下载到本地并引入。 2. 创建视频播放器:在 HTML 页面中,添加一个 `<video>` 标签,指定视频源地址。 3. 调用 video.js使用 JavaScript 代码调用 video.js,将 `<video>` 标签转换为 video.js 播放器。代码如下: ``` var player = videojs('my-video'); ``` 其中,`my-video` 是 `<video>` 标签的 id。 4. 自定义播放器样式:可以通过 CSS 控制播放器的外观,修改颜色、字体等样式属性,以适应网站的设计需求。 5. 自定义播放器功能:video.js 提供了丰富的 API,可以根据需求对播放器进行自定义。例如,添加播放、暂停、快进、音量控制的按钮等。 6. 添加插件和功能:video.js 还支持添加各种插件和功能,增加播放器的功能性。例如,添加弹幕功能、字幕显示等。 7. 事件处理:video.js 通过触发各种事件来响应用户行为或播放器的状态变化。可以通过监听事件来实现相应的处理逻辑。 8. 媒体源和格式:video.js 支持多种媒体源和格式,包括 MP4、WebM、HLS 等。可以根据目标用户设备和网络环境选择最适合的格式。 9. 响应式设计:video.js 支持响应式设计,可以根据不同屏幕尺寸和设备自动调整播放器的布局和样式。 10. 浏览器兼容性:video.js 兼容各种主流浏览器,包括 Chrome、Firefox、Safari、IE 等。 以上是 video.js使用教程大全,希望这些信息对你使用 video.js 进行视频播放有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值