前言

1、通过接口获取媒体流地址或静态地址;(省略)
2、通过 西瓜播放器插件xgplayer 以及相关xgplayer支持的插件实现直播
本质:始终在调用流地址实现视频播放(个人理解)

使用

  1. template
 <divref="video"id="mmid"v-show="islivea"></div>
  1. 安装西瓜播放器插件
    官网
$ npm install xgplayer
$ npm install xgplayer-hls.js
// 由于是直播,我们使用xgplayer-hls.js插件,对于hls协议的点播(直播)可以使用该插件完成,
//该插件是对hls.js的封装,力求稳定的同学可以使用该插件。
// 其他插件也可以,比如 xgplayer-flv
// $ npm install xgplayer-flv
  1. 使用

引入

import Player from "xgplayer"; // 用来播放录播的MP4格式视频
// import FlvPlayer from "xgplayer-flv"; // 直播流flv
import HlsJsPlayer from "xgplayer-hls.js"; // 直播流m3u8(hls)

mounted下

// ts书写   js把:void去掉
mounted(): void {this.getVideo();}

相关参数配置和说明

// ts书写   js把private 私有声明去掉private getVideo() {setTimeout(() => {this.videoPlayer = new HlsJsPlayer({el: document.querySelector("#mmid"), // 选择demo// url: 'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4',url: 'http://play.happok.com/happok/7440.m3u8?auth_key=1621421808-0-0-d284825ce4d69e098fbba3b3748b63b7',width: "100%",height: "240px",volume: 0.6, // 初始音量autoplay: true, // 自动播放playsinline: true,isLive: true, // 是否直播// rotate: {   //视频旋转按钮配置项//     innerRotate: true, //只旋转内部video//     clockwise: false // 旋转方向是否为顺时针// },controls:true, // 播放器控制controlsList: ['nodownload'], // 关闭控制器相关配置 ['nodownload','nofullscreen','noremoteplayback'] 只对原生video有效 对自定义UI请使用ignores选项ignores: ['fullscreen'], // 控制条忽略相关配置项 ['time', 'definition', 'error', 'fullscreen', 'i18n', 'loading', 'mobile', 'pc', 'play', 'poster', 'progress', 'replay', 'volume']lang: 'zh-cn', // 语言支持 'zh-cn' | 'en' | 'jp' 中文、英文、日文rotateFullscreen: false,// 样式全屏,不旋转=>视频会随着手机横竖屏进行切换closeVideoClick: true, // video触发click事件后视频切换播放/暂停状态 关闭closeVideoTouch: true, // h5端触发touchend事件后视频切换播放/暂停状态 关闭videoInit: true,poster: 'https://pics5.baidu.com/feed/ae51f3deb48f8c544ac3d4662d3a57fde0fe7f06.jpeg?token=ea1493323bf5a129e0569426a19e0e3e', // 封面图cors: true // 请求是否跨域});}, 150);}
  1. 适配相关-同层播放微信端
'x5-video-player-type':'h5-page', //同层播放
playsinline: true // 处理ios点击播放默认全屏问题

5、api-事件 优化相关(网慢提示、以及结束控制)

// 播放器相关参数控制console.log(this.videoPlayer.networkState) // 返回视频的当前网络状态console.log(this.videoPlayer.hasStart)// 是否开始播放console.log(this.videoPlayer.readyState)//返回视频的就绪状态
this.videoPlayer.on('waiting',()=>{ // 页面监听缓冲时间,如果存在则进行判断缓冲的时间是否大于3秒console.log('waiting网慢加载')this.$set(this.loadObj,'wait',true) // 定义属性保存出现缓冲if(this.loadObjsetTimeOut){ // 定义属性保存setTIMEOUT事件,确保只执行一次clearTimeout(this.loadObjsetTimeOut)}this.loadObjsetTimeOut=setTimeout(()=>{if(Object.keys(this.loadObj).length > 0){ // 判断3s后是否还在缓冲Toast({type: 'html',message: '<span>本端网络信号弱</span>',position: 'top',duration: 2000,className:'cctoast',});}setTimeout(()=>{ // 判断13s后是否还在缓冲if(Object.keys(this.loadObj).length > 0){Toast({type: 'html',message: '<span>本端网络信号弱,请稍后重试</span>',position: 'top',duration: 2000,className:'cctoast',});}},10000)},3000)})this.videoPlayer.on('canplay',()=>{ // 监听播放事件  缓冲如果结束了则对对象置空console.log('canplay可以播放')if(Object.keys(this.loadObj).length > 0){this.loadObj = {}}})this.videoPlayer.on('error',(error)=>{Toast({type: 'html',message: '<span>当前无直播</span>',position: 'top',duration: 3000,className:'cctoast',});// 视频流404的时候=>视频停止推流 进行监听错误的结束事件if(this.videoPlayer.readyState=='没有关于音频/视频是否就绪的信息'){//逻辑//结束视频// 一般可以使用一张图片进行代替视频demo} })

前端-h5直播视频流(xgplayer 篇)相关推荐

  1. H5直播入门(理论篇)

    前言 这篇总结其实是去年公司每周技术分享会轮到我的时候写的.那时候公司正在大刀阔斧地准备直播业务,私以为主管会委以重任,就翻了不少论坛,做了一次简单的技术分享.后来直播业务让另一位同事承担了,自己也就 ...

  2. H5直播答题并不难,看完这篇你也会

    各大平台为了给自家的直播答题争抢流量,已经绞尽脑汁,不断在玩法上进行创新.这场竞争从 iOS 平台蔓延至 Android 平台.目前大多数平台获取用户的方式还是通过分享邀请码,下载 App 的方式进行 ...

  3. 前端开发:H5直播起航

    前言 前不久抽空对目前比较火的视频直播,做了下研究与探索,了解其整体实现流程,以及探讨移动端HTML5直播可行性方案. 发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端 ...

  4. H5直播站点运维笔记一 服务器篇

    H5直播站点运维笔记一 服务器 服务器篇 一.CentOS6基础操作 1. 查看服务器版本 2. 查看服务器性能 3. 文件查找 4. 软件查找 5. 用户系统 6. 远程登录工具 二.FTP ( V ...

  5. H5直播站点运维笔记四 压测篇

    H5直播站点运维笔记四 压测篇 压测篇 一.测试环境 1.CPU 2.内存 3.操作系统 4.WEB环境 二.优化前压测 三.开启opcache优化 四.laravel 缓存配置/路由/类映射加载优化 ...

  6. 移动端H5直播/点播前端入坑简易手册

    需求来了,只能H5 因业务需要,我们要在微信中使用直播服务.因为业务较小,没有必要花很多钱去采购第三方一条龙服务.那么,我们采用直播推流使用腾讯云的服务,前端自己开发页面. 原来考虑过使用微信小程序做 ...

  7. H5直播之MSE(Media Source Extensions)

    参考 w3c media-source Media Source 系列 - 使用 Media Source Extensions 播放视频 全面进阶 H5 直播 无 Flash 时代,让直播拥抱 H5 ...

  8. H5直播系列二 MSE(Media Source Extensions)

    转自https://www.jianshu.com/p/1bfe4470349b 参考 w3c media-source Media Source 系列 - 使用 Media Source Exten ...

  9. h5直播开发之旅总结

    前言 关于直播,有很多相关技术文章,这里不多说. 作为前端,我们比较关心我们所需要的. 直播的大致流程: APP端调用摄像头 -> 拍摄视频 -> 实时上传视频 -> 服务器端获取视 ...

最新文章

  1. 几种移动开发技术的比较和选型
  2. nand ubi -2 ubi管理下的SLC nand
  3. Swift中switch比较元组类型
  4. db2 创建样本数据库_db2创建数据库
  5. rabbitmq direct 多个消费者_一文解析 RabbitMQ 最常用的三大模式
  6. jy61 树莓派_用Linux树莓派来读取JY61的串口数据
  7. 基于Python+Django+MYSQL的校园食堂点餐管理系统
  8. 在SQL Server中使用SQL Coalesce函数
  9. 《Java程序员职场全攻略:从小工到专家》连载十:这条路大家都是怎么走的
  10. 都说苹果秋季发布会像一杯白开水,那么...
  11. 【积】有向图中的louvain社区检测(二)
  12. FastDFS分布文件系统Java客户端使用
  13. 排列组合思维导图_图形推理 思维导图 百度文库
  14. javaweb项目实训总结_JAVA WEB实训总结
  15. 深入了解一下C语言scanf()库函数
  16. 网络安全笔记-99-渗透-SSRF
  17. 无监督学习问题可以分为两类问题
  18. UOS Deepin 安装 flatpak
  19. java课程设计之小游戏贪吃蛇
  20. 首次使用计算机按什么键,电脑怎么重启按什么键

热门文章

  1. linux系统更改名字,Linux系统中修改用户名的两种方案整理
  2. 借助cpolar 和大家分享有趣的照片 1 (在本地电脑上部署piwigo网页)
  3. AI智能语音识别模块(SU-03T)
  4. vulnhub之tomato(西红柿)
  5. GPS数据格式 GPRMC 解析
  6. 「经典题」Vue获取DOM的几种方法?
  7. Linux 磁盘扩容及挂载新盘
  8. 学生台灯护眼灯哪个牌子好性价比高?视力康复师推荐的护眼台灯
  9. [报错]深析AttributeError: ‘NoneType‘ object has no attribute ‘xxx‘(持更)
  10. 基于Hexo的个人网站制作简明教程