视频播放插件 Video.js 使用和个版本下载 2022-05-18 02:46 412阅读 0赞 > 来源:[https://blog.csdn.net/zhanghao143lina/article/details/79457035][https_blog.csdn.net_zhanghao143lina_article_details_79457035] Video.js 是一个通用的在网页上嵌入视频播放器的 JS 库,Video.js 自动检测浏览器对 HTML5 的支持情况,如果不支持 HTML5 则自动使用 Flash 播放器。(要支持ie低版本请下载5.4.3版 )[点击进入官网][Link 1] ## 下载 ## [各个版本下载][Link 2] ## 使用 ## #### 引入文件 #### <link href="video-js.css" rel="stylesheet" type="text/css"> <script src="video.js"></script> **注**:一般我使用时会把下载的包整个拷贝到项目的`plugin`目录下,一方面可以方便以后查看Demo的使用方法,另一方面也避免内部文件之间引用的路径问题。 设置flash路径,Video.js会在不支持html5的浏览中使用flash播放视频文件。 <script> videojs.options.flash.swf = "video-js.swf" ; </script> #### HTML #### <video id="example_video_1" class="video-js vjs-default-skin" controls preload="none" width="640" height="264" poster = "http://video-js.zencoder.com/oceans-clip.png" data-setup = "{}" > <source src="http://视频地址格式1.mp4" type='video/mp4' /> <source src="http://视频地址格式2.webm" type='video/webm' /> <source src="http://视频地址格式3.ogv" type='video/ogg' /> <track kind="captions" src="demo.captions.vtt" srclang="en" label="English"> </track> <!-- Tracks need an ending tag thanks to IE9 --> <track kind="subtitles" src="demo.captions.vtt" srclang="en" label="English"> </track> <!-- Tracks need an ending tag thanks to IE9 --> </video> 设置自动播放将下面代码加到html中代码后面 <script type="text/javascript"> var myPlayer = videojs( 'example_video_1' ); // video 标签中的ID myPlayer.ready( function() { myPlayer.play(); // 调用播放函数 }); </script> 默认情况下,大的播放按钮是被定为在左上角的,这样就不会覆盖视频内容。如果你想让这个播放按钮居中,你可以给你的 video 标签添加额外的 `vjs-big-play-centered`样式,比如: <video id="example_video_1" class="video-js vjs-default-skin vjs-big-play-centered" controls preload = "auto" width = "640" height = "264" poster = "http://video-js.zencoder.com/oceans-clip.png" data-setup = '{"example_option":true}' > ... </video> 如果你还对播放按钮样式不满意可重新定义`video-js .vjs-big-play-button{/这里的样式重写/}` #### 为动态加载的 HTML 元素设置 Video.js #### 如果你的 web 页面或者应用是动态加载 video 标签的(ajax,appendChild,等等),这样在页面加载后这个元素是不存在的,那么你会想要手动设置播放器而不是依靠 `data-setup` 属性,做法如下: 1. 将 data-setup 属性从 video 标签中移除掉,避免播放器混乱。 2. 运行下面的 javascript videojs("example_video_1", {}, function(){ // Player (this) is initialized and ready. }); * videojs 方法中的第一个参数是你的 video 标签的 ID,用你自己的代替。 * 第二个参数是一个选项对象。它允许你像设置 data-setup 属性一样设置额外的选项。 * 第三个参数是一个 ‘ready’ 回调。一旦 Video.js 初始化完成后,就会触发这个回调。 ##### 注意 ##### 在动态加载HTML进行初始化`player`对象的时候,很容易出现播放界面混乱的情况,我做的时候就出现了比如播放条错位,缺少播放时间和全局时间的显示,有白点等问题。遇到这种情况先检查加载顺序,如果不是的话也不要慌,在浏览器里找到混乱的元素,自己进行调试,把修改的 css 样式放到 HTML 的 `<style>`块中,不要修改插件的 CSS 文件,因为是在 js 加载的时候更改的样式,要在自己的页面里修改,如果这时候修改还是没有起作用,css 属性后面用`!important`来强制提高样式加载的优先级。 比如,如果页面有多余元素(例如白点),浏览器调试找到,css 设置`display:none`;当页面元素错位(例如进度条、声音图标错位),用`margin`来调节合适位置;当页面元素缺失,比如缺少播放时间、剩余时间等,在浏览器 F12 调试找到对应元素,设置`display:block`。 ![Image 1][] 我做的项目中的使用效果 #### 常用方法 #### * 播放:`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();` #### 添加事件 #### durationchange ended //播放结束 firstplay fullscreenchange loadedalldata loadeddata loadedmetadata loadstart pause //暂停 play //播放 progress seeked seeking timeupdate volumechange waiting resize inherited var myFunc = function(){ // Do something when the event is fired }; #### 事件绑定 #### myPlayer.on("ended", function(){ console.log("end", this.currentTime()); }); myPlayer.on("pause", function(){ console.log("pause") }); #### 删除事件 #### myPlayer.removeEvent(“eventName”, myFunc); #### 页面中有多个视频 #### 一个页面中有多个视频,需要点击后触发bootstrap 的模态窗,再弹出视频 ##### HTML ##### <a videohref="http://xxx.mp4" class="video_link"></a> ##### js ##### $(<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() { myPlayer.pause(); }); ## 场景使用补充 ## #### 场景1:实时监控 #### 在当需要实时监听视频进度的时候,比如我遇到的场景是课程视频有试听课,只能试听这个视频的前多少分钟。这个时候,不管是普通播放还是拖动进度条都需要实时监听播放的时间进度,判断是否大于试听时间,进行对应操作。 代码片段如下: // 判断试听时间 if(b){ window.loopMarquee = setInterval(function(){ if(player.currentTime() >= listenTime){ player.pause(); $(<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() { getVideoTime(); }); 作者:丹青笔 链接: [https://www.jianshu.com/p/9414886a8963][https_www.jianshu.com_p_9414886a8963] 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 [https_blog.csdn.net_zhanghao143lina_article_details_79457035]: https://blog.csdn.net/zhanghao143lina/article/details/79457035 [Link 1]: https://link.jianshu.com?t=http://videojs.com/ [Link 2]: https://link.jianshu.com?t=http://www.jq22.com/jquery-info404 [Image 1]: [https_www.jianshu.com_p_9414886a8963]: https://www.jianshu.com/p/9414886a8963
相关 vue3播放m3u8视频(videoJS) 安装 npm install video.js --save 组件内导入 需要同时导入videoJS以及相关的CSS import videoj 小咪咪/ 2023年09月23日 19:25/ 0 赞/ 63 阅读
相关 videojs多个视频一起播放暂停 需求 多个视频要用同一个进度条控制播放暂停 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_tex 布满荆棘的人生/ 2022年11月03日 14:27/ 0 赞/ 246 阅读
相关 videoJS 播放 u3m8 格式视频Demo videoJS 播放 u3m8 格式视频Demo [VideoJs 官网地址][VideoJs] <!DOCTYPE html> <html lan ゞ 浴缸里的玫瑰/ 2022年10月16日 01:56/ 0 赞/ 203 阅读
相关 视频播放插件Video.js 来源:http://www.jq22.com/jquery-info404 Video.js最新v6.6.2版 2018-1-02更新 Bug 修复 进度条时间工具 妖狐艹你老母/ 2022年05月28日 01:13/ 0 赞/ 282 阅读
相关 视频播放插件 Video.js 使用和个版本下载 > 来源:[https://blog.csdn.net/zhanghao143lina/article/details/79457035][https_blog.csdn.ne 柔光的暖阳◎/ 2022年05月18日 02:46/ 0 赞/ 413 阅读
相关 使用ckplayer插件实现针对浏览器不同版本实现视频播放 现在一般实现网页播放视频功能,常用的就是H5的video标签,方便快捷,配置简单,但也有其不足处,因其属于H5标签,故有些低版本的浏览器就无法使用该标签,为了解决兼容性 怼烎@/ 2022年05月17日 10:22/ 0 赞/ 170 阅读
相关 videojs 播放.M3U8格式视频 1.原生video标签网页端只支持MP4、OGG、WebM的视频格式 2.直播的视频格式一般为.m3u8,如果不行对video进行格外处理,可以采用video.js插件 ゝ一世哀愁。/ 2022年03月08日 19:30/ 0 赞/ 922 阅读
相关 vue项目使用视频播放器 h5视频播放插件 vue项目中需要播放视频,然后网上搜了一下对应的插件,发觉xg-player西瓜播放器用起来不错。开源这个播放器的作者应该是一个超级大牛。 特此记录一下这款播放器的使用 客官°小女子只卖身不卖艺/ 2022年02月24日 13:30/ 0 赞/ 934 阅读
相关 videoJs播放视频 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> 约定不等于承诺〃/ 2022年02月14日 02:55/ 0 赞/ 355 阅读
相关 videojs插件的参数解释 初始化 <!-- vjs-big-play-centered可使大的播放按钮居住,vjs-fluid可使视频占满容器 --> <video id="myVid - 日理万妓/ 2021年06月26日 16:06/ 0 赞/ 806 阅读
还没有评论,来说两句吧...