Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >video.js调用

video.js调用

作者头像
kirin
发布于 2020-06-22 07:29:38
发布于 2020-06-22 07:29:38
31.5K00
代码可运行
举报
文章被收录于专栏:Kirin博客Kirin博客
运行总次数:0
代码可运行

>  一、总结(点击显示或隐藏总结内容)

一句话总结:

网上有各种细致的现成的代码可以拿来用,没必要自己死专

1、video.js有两种初始化方式?

一种是在video的html标签之中
一种是使用js来进行初始化

二、记录一波video.js的使用及问题

转自或参考:记录一波video.js的使用及问题 – – SegmentFault 思否 https://segmentfault.com/a/1190000018914486?utm_source=tag-newest

1、视频初始化

video.js有两种初始化方式,一种是在video的html标签之中,一种是使用js来进行初始化

1.1、在video中进行初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<video
    id="my-player"
    class="video-js"
    controls
    preload="auto"
    poster="//vjs.zencdn.net/v/oceans.png"
    width="600"
    height="400"
    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="https://videojs.com/html5-video-support/" target="_blank">
      supports HTML5 video
    </a>
  </p>
</video>

效果

1.2、使用js进行初始化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!-- vjs-big-play-centered可使大的播放按钮居住,vjs-fluid可使视频占满容器 -->
<video id="myVideo" class="video-js vjs-big-play-centered vjs-fluid">
  <p class="vjs-no-js">
    To view this video please enable JavaScript, and consider upgrading to a
    web browser that
    <a href="https://videojs.com/html5-video-support/" target="_blank">
      supports HTML5 video
    </a>
  </p>
</video>

<script>
var player = videojs(document.getElementById('myVideo'), {
  controls: true, // 是否显示控制条
  poster: 'xxx', // 视频封面图地址
  preload: 'auto',
  autoplay: false,
  fluid: true, // 自适应宽高
  language: 'zh-CN', // 设置语言
  muted: false, // 是否静音
  inactivityTimeout: false,
  controlBar: { // 设置控制条组件
    /* 设置控制条里面组件的相关属性及显示与否
    'currentTimeDisplay':true,
    'timeDivider':true,
    'durationDisplay':true,
    'remainingTimeDisplay':false,
    volumePanel: {
      inline: false,
    }
    */
    /* 使用children的形式可以控制每一个控件的位置,以及显示与否 */
    children: [
      {name: 'playToggle'}, // 播放按钮
      {name: 'currentTimeDisplay'}, // 当前已播放时间
      {name: 'progressControl'}, // 播放进度条
      {name: 'durationDisplay'}, // 总时间
      { // 倍数播放
        name: 'playbackRateMenuButton',
        'playbackRates': [0.5, 1, 1.5, 2, 2.5]
      },
      {
        name: 'volumePanel', // 音量控制
        inline: false, // 不使用水平方式
      },
      {name: 'FullscreenToggle'} // 全屏
    ]
  },
  sources:[ // 视频源
      {
          src: '//vjs.zencdn.net/v/oceans.mp4',
          type: 'video/mp4',
          poster: '//vjs.zencdn.net/v/oceans.png'
      }
  ]
}, function (){
  console.log('视频可以播放了',this);
});
</script>

2、controlBar组件的说明

  • playToggle, //播放暂停按钮
  • volumeMenuButton,//音量控制
  • currentTimeDisplay,//当前播放时间
  • timeDivider, // ‘/’ 分隔符
  • durationDisplay, //总时间
  • progressControl, //点播流时,播放进度条,seek控制
  • liveDisplay, //直播流时,显示LIVE
  • remainingTimeDisplay, //当前播放时间
  • playbackRateMenuButton, //播放速率,当前只有html5模式下才支持设置播放速率
  • fullscreenToggle //全屏控制

currentTimeDisplay,timeDivider,durationDisplay是相对于 remainingTimeDisplay的另一套组件,后者只显示当前播放时间,前者还显示总时间。若要显示成前者这种模式,即 ‘当前时间/总时间’,可以在初始化播放器选项中配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var myPlayer = neplayer('my-video', {controlBar:{
    'currentTimeDisplay':true,
    'timeDivider':true,
    'durationDisplay':true,
    'remainingTimeDisplay':false
}}, function() {
    console.log('播放器初始化完成');
});

3、video.js样式修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.video-js{ /* 给.video-js设置字体大小以统一各浏览器样式表现,因为video.js采用的是em单位 */
  font-size: 14px;
}
.video-js button{
  outline: none;
}
.video-js.vjs-fluid,
.video-js.vjs-16-9,
.video-js.vjs-4-3{ /* 视频占满容器高度 */
  height: 100%;
  background-color: #161616;
}
.vjs-poster{
  background-color: #161616;
}
.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: rgba(115,133,159,.5);
  border-width: 0.12em;
  margin-top: -1.25em;
  margin-left: -1.75em;
}
.video-js.vjs-paused .vjs-big-play-button{ /* 视频暂停时显示播放按钮 */
  display: block;
}
.video-js.vjs-error .vjs-big-play-button{ /* 视频加载出错时隐藏播放按钮 */
  display: none;
}
.vjs-loading-spinner { /* 加载圆圈 */
  font-size: 2.5em;
  width: 2em;
  height: 2em;
  border-radius: 1em;
  margin-top: -1em;
  margin-left: -1.5em;
}
.video-js .vjs-control-bar{ /* 控制条默认显示 */
  display: flex;
}
.video-js .vjs-time-control{display:block;}
.video-js .vjs-remaining-time{display: none;}

.vjs-button > .vjs-icon-placeholder:before{ /* 控制条所有图标,图标字体大小最好使用px单位,如果使用em,各浏览器表现可能会不大一样 */
  font-size: 22px;
  line-height: 1.9;
}
.video-js .vjs-playback-rate .vjs-playback-rate-value{
  line-height: 2.4;
  font-size: 18px;
}
/* 进度条背景色 */
.video-js .vjs-play-progress{
  color: #ffb845;
  background-color: #ffb845;
}
.video-js .vjs-progress-control .vjs-mouse-display{
  background-color: #ffb845;
}
.vjs-mouse-display .vjs-time-tooltip{
  padding-bottom: 6px;
  background-color: #ffb845;
}
.video-js .vjs-play-progress .vjs-time-tooltip{
  display: none!important;
}

4、动态切换视频

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script>
  var data = {
    src: 'xxx.mp4',
    type: 'video/mp4'
  };
  var player = videojs('myVideo', {...});
  player.pause();
  player.src(data);
  player.load(data);
  // 动态切换poster
  player.posterImage.setSrc('xxx.jpg');
  player.play();

  // 销毁videojs
  //player.dispose();
</script>

5、设置语言

5.1传统形式开发

对于使用<script>标签形式的方式引入video.js,只需要在页面中引入你需要的语言包即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="//example.com/path/to/lang/es.js"></script>
<script src="//example.com/path/to/lang/zh-CN.js"></script>
<script src="//example.com/path/to/lang/zh-TW.js"></script>

<script>
var player = videojs('myVideo', {
    language: 'zh-CN' // 初始化时设置语言,立即生效
});

/* 动态切换语言
  使用这种方式进行动态切换不会立即生效,必须有所操作后才会生效。如播放按钮,必须点击一次播放按钮后播放按钮的提示文字才会改变  
 */
//player.language('zh-TW');
</script>

5.2、vue开发

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import Video from 'video.js'
/* 不能直接引入js,否则会报错:videojs is not defined 
import 'video.js/dist/lang/zh-CN.js' */
import video_zhCN from 'video.js/dist/lang/zh-CN.json'
import video_en from  'video.js/dist/lang/en.json'
import 'video.js/dist/video-js.css'

Video.addLanguage('zh-CN', video_zhCN);
Video.addLanguage('en', video_en);

6、解决在iPhone中播放时自动全屏问题(2019.09.23)

在iPhone设备上播放视频时(微信浏览器上也会有这个问题)会自动全屏,这里的全屏并不是常规的手机横屏那种全屏,而是类似于一个modal弹窗的全屏,解决办法就是在video标签中添加playsinline="true"属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<video
    webkit-playsinline="true"
    playsinline="true"
    class="video-js vjs-big-play-centered vjs-fluid">
</video>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
nginx实现最简单的直播平台
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
6450
nginx实现最简单的直播平台
videojs播放器插件使用详解
HLS是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。
菲宇
2020/04/16
53.3K2
【技巧】ionic3视频播放
一般视频的展示方式有两种:缩略图和直接播放,分别对应下面两种效果(可参考直播应用和今日头条视频):
IT晴天
2018/08/20
2K0
Vue之设置视频为背景图
前排提示:这个是基于vue的 添加依赖 找到项目的package.json文件在dependencies中加入依赖 json "vue-video": "^0.1.7", "vue-video-player": "^5.0.2", "video.js": "^7.10.2", "videojs-contrib-hls": "^5.15.0", 效果如下: json "dependencies": { "axios": "0.18.0", "echarts": "^4.1.0", "elemen
shaoshaossm
2023/02/03
2.2K0
EasyNVR H5无插件直播方案前端构建之:播放界面添加实时云台控制界面
对于实时直播的视频播放, 由于播放页面客观样式要求(一个播放器占据了整个页面),因此很难找出很合理的空间来放置其他功能按钮的位置(比如配合实时的云平台控制界面);
EasyNVR
2020/04/23
1K0
EasyNVR H5无插件直播方案前端构建之:播放界面添加实时云台控制界面
videojs插件使用「建议收藏」
使用整理:使用主要针对于移动端视频播放,考虑的点:视频显示适配手机宽度;适配定义样式;在微信端,安卓、ios视频空间控件不同,定制等会自动被微信视频控件覆盖;播放过程中定制暂停/播放按钮事件等;播放结束后定制重播、下一个视频事件,读秒播放下一个视频
全栈程序员站长
2022/11/01
10.4K0
Cordova插件cordova-plugin-media-capture实现短视频的录制上传和播放
1、网上的教程大部分都是虎头蛇尾的不全的。互相抄来抄去真的感觉就没有一个是真正自己去写一写的,不然这里面这么多的坑就没有一个人出来说说的?下面就写写我实现功能过程中的一些问题吧,代码绝对完整并且按照步骤来一定可以成功!
用户6493868
2022/03/05
1.9K0
Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器
本文首发:《Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器》
蒋川
2022/03/29
12.3K0
Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器
基于video.js来实现vue的视频播放功能
video.js是一个很好的视频播放插件,但是如果移植到vue上相信很多小伙伴很苦恼,是不是网上搜了一堆,发现不好使,我也是踩坑了,后来发现官方文档上就有,好尴尬,建议以后学习先看看官方文档,会有惊喜的。 1.首先安装video.js,然后在main.js中引入
李维亮
2021/07/08
14.8K0
vue的video插件vue-video-player
在线视频文件格式转化工具:https://cloudconvert.com/wmv-to-mp4
晓歌
2018/08/15
9.8K0
vue使用video.js解决m3u8视频播放格式
今天被这个关于m3u8视频播放不了搞了一下午,这个项目所有的视频流都是m3u8格式的,后台给我们返回的都是m3u8格式的视频流,解决了好长时间,看了好多博客,只有这个博客给我点启发,去解决这个问题,请查看。会使用两种方法来解决这个问题
小周sir
2019/09/23
9.9K0
vue使用video.js解决m3u8视频播放格式
rtmp、m3u8直播小记
最近项目做跟视频有关的,一个是直播,一个是播放视频。使用video标签。视频直播有很多协议,rtmp、rtsp、hls等就自己去了解,业务有做到就会了解一些。
wade
2020/04/24
5.6K0
解决video标签播放m3u8格式视频失败问题
前言 什么是m3u8? 效果 效果地址 m3u8视频切换 效果图片 解决方法 采用video.js插件! 引入 引入videoJS插件样式文件; 引入videoJS插件JS文件; 引
Rattenking
2021/01/30
8.3K0
【直播】nginx搭建rtmp流直播环境
windows下很容易搭建,只需要下载nginx-1.7.11.3-Gryphon就可以了,解压之后运行run_ngnix.bat 能力强的同学自己编译最新版本nginx并使用吧
一朵灼灼华
2022/08/05
3.8K0
【直播】nginx搭建rtmp流直播环境
Video.js简单使用
今天项目中需要跨浏览器地播放视频,在网上找了一下,找到了video.js,记录一下video.js的简单用法。 <html> <head> ... <!-- 引入video.js的样式文件 --> <link rel="stylesheet" type="text/css" href="css/video-js.css" /> ... <!-- 如果没有使用Modernizr,则使用以下代码做shiv --> <script type="text/javascript"> document.createE
jeremyxu
2018/05/09
17.1K0
Vue3开发:视频播放器video.js使用详解
Video.js是一个通用的在网页上嵌入视频播放器的JS库,比原生video标签有更强大的功能、更好的兼容性、更美观等优点。是一个比较流行的视频播放器,它的官网是https://videojs.com/
BennuCTech
2023/08/28
10.8K0
Vue3开发:视频播放器video.js使用详解
vue-video-player 视频播放器使用以及多视频宫格实例参考
在安装过程中,npm会下载vue-video-player的最新版本并安装到项目中。安装完成后,我们就可以在项目中使用vue-video-player组件了。
鳄鱼儿
2024/05/21
3.7K0
vue-video-player 视频播放器使用以及多视频宫格实例参考
简单搭建一个直播服务器
1、下载srsv2.0_r8 ,下载地址是:https://codeload.github.com/ossrs/srs/zip/v2.0-r8
全栈程序员站长
2022/09/01
3.5K0
简单搭建一个直播服务器
COS 音视频实践 | 多种姿势让你的视频“跑”起来
随着4G/5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分。腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务,早已不是一个简单的对象存储服务,结合数据万象(CI)的数据处理能力,同时具备丰富的音视频能力。
云存储
2021/11/23
2.4K0
COS 音视频实践 | 多种姿势让你的视频“跑”起来
最新版videoJS使用播放M3U8格式直播 视频
JaneYork
2023/10/11
1.5K0
推荐阅读
相关推荐
nginx实现最简单的直播平台
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验