vue项目中实现直播功能同时具备弹幕和聊天室功能

一、vue中实现直播功能

1.首先,需要知道直播的常用协议,RTMP 和 HLS,我这边采用的直播流为HLS。下面就是对播放选取,做过 H5 播放器的对与 video.js 并不陌生,实现的出发点也是在 video.js 上,默认大家都有 Vue 搭建和简单运用能力了,这里对video.js不做详细介绍,ok下面来进行实现直播。先来看一下页面的效果图。

2.涉及到视频顾名思义就需要播放器,这里选用的是vue-video-player(底层还是依赖 video.js),上面图中的测试直播流是cctv6。

(1)安装依赖

npm install vue-video-player --save

(2)在main.js中引入

// vue-video-player
import VideoPlayer from 'vue-video-player'
require('video.js/dist/video-js.css')
require('vue-video-player/src/custom-theme.css')
import 'videojs-contrib-hls' //单是 RTMP 的话不需要第三方库,如果是 HLS 的话需要引入videojs-contrib-hls,看具体情况而定。
Vue.use(VideoPlayer);

(3)下面就可以在组件中直接去使用这个播放器了

<template>
<div class="player"><video-player class="video-player vjs-custom-skin"ref="videoPlayer":playsinline="true":options="playerOptions"@play="onPlayerPlay($event)"@pause="onPlayerPause($event)"></video-player>
</div>
</template>
<script>
export default {name: 'Play',
data () {return {playerOptions: {playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度autoplay: true, //如果true,浏览器准备好时开始回放。muted: false, // 默认情况下将会消除任何音频。loop: false, // 导致视频一结束就重新开始。preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。auto浏览器选择最佳行为,立即开始加载视频(如果浏览器支持)language: 'zh-CN',aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")fluid: true, // 当true时,Video.js player将拥有流体大小。换句话说,它将按比例缩放以适应其容器。sources: [{withCredentials: false,type: "application/x-mpegURL", //播放类型,如果为rtmp配置为rtmp/mp4src: "http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8" //直播流地址}],poster: "poster.jpg", //你的封面地址width: document.documentElement.clientWidth,notSupportedMessage: '此视频暂无法播放,请稍后再试', //允许覆盖Video.js无法播放媒体源时显示的默认信息。controlBar: {timeDivider: true,durationDisplay: true,remainingTimeDisplay: false,fullscreenToggle: true //全屏按钮}},}
}

二、vue项目中直播功能添加弹幕

(1)vue能实现弹幕功能的插件有很多(如:barrage,vue-baberrage),这里我选用的是第二种官方帮助文档。由于项目需求是聊天内容飘弹幕,所以弹幕的实现需要配合websocket,这篇内容先不介绍聊天室的实现,这里的介绍暂且按照官方提供的,只是简单实现弹幕没有融入到通讯功能里,换句话说就是你发的弹幕只有你自己可见emmm,后面一篇文章中更新websocket,将弹幕融入到通讯。所以老套路还是先安装:

npm i vue-baberrage

(2)在main,js中引入

//涉及到源码样式要更改所以这里静态引入
import vueBaberrage from '../static/vue-baberrage'
Vue.use(vueBaberrage);//不需要更改源码样式的话
import { vueBaberrage } from 'vue-baberrage'
Vue.use(vueBaberrage);

(3)在组件中使用弹幕

Template<div class="danmu"><vue-baberrage:isShow= "barrageIsShow":barrageList = "barrageList":loop = "barrageLoop"></vue-baberrage></div>
Script
import { MESSAGE_TYPE } from 'vue-baberrage'export default {name: 'app',data () {return {msg: 'Hello vue-baberrage',barrageIsShow: true,currentId : 0,barrageLoop: false,barrageList: []}},  methods:{addToList (){this.barrageList.push({id: ++this.currentId,avatar: "./static/avatar.jpg",msg: this.msg,time: 5,type: MESSAGE_TYPE.NORMAL});...
参数说明
isShow
- Default: `true`
- Acceptable-Values: Boolean
- Function: This is the switch that if barrage is displayed.
barrageList
- Default: `[]`
- Acceptable-Values: Array
- Function: The is the container for managing the all barrage messages.
boxWidth
- Default: `parent's Width`
- Acceptable-Values: Number
- Function: Determine the width of the stage.
boxHeight
- Default: `window's Height`
- Acceptable-Values: Number
- Function: Determine the height of the stage.
messageHeight
- Default: `message's Height`
- Acceptable-Values: Number
- Function: Determine the height of the message.
maxWordCount
- Default: 60
- Acceptable-Values: Number
- Function: Determine the word count of the message.
loop
- Default: `false`
- Acceptable-Values: Boolean
- Function: Loop or not.
throttleGap
- Default: 2000
- Acceptable-Values: Number
- Function: The gap time between the message
Barrage Message Options
id
- Default: `null`
- Acceptable-Values: Number
- Function: For distinguish with other barrage messages.
avatar
- Default: `#`
- Acceptable-Values: String
- Function: Show the avatar of the barrage message.
msg
- Default: `null`
- Acceptable-Values: String
- Function: The content of the barrage message.
barrageStyle
- Default: `normal`
- Acceptable-Values: String
- Function: the css class name of the barrage message.
time
- Default: `10`
- Acceptable-Values: Number
- Function: How long does the barrage message show.(Seconds)
type
- Default: MESSAGE_TYPE.NORMAL
- Acceptable-Values: Symbol
- Function: The type of the barrage message. MESSAGE_TYPE.NORMAL for scroll from right to left. MESSAGE_TYPE.FROM_TOP for fixed on the top of the stage.

websocket与弹幕配合使用,点击进入查看
本博客为原厂加工生产,转载请注明出处,谢谢

vue pc端实现 直播功能+弹幕相关推荐

  1. 优酷html5视频没有弹幕,优酷弹幕怎么设置 优酷PC端怎么屏蔽底下弹幕?

    电脑版优酷打开弹幕步骤: 打开电脑浏览器,在地址栏输入优酷官网地址,进入优酷官网. 进入优酷官网后,点击想要观看的影片并播放. 影片非全屏播放时,在播放界面有一个全屏符号,点击该符号进入全屏播放模式. ...

  2. vue PC 端使用腾讯地图定位

    vue PC 端使用腾讯地图定位 需求:希望网站显示当前城市 腾讯前端定位组件 解决的方法 定义一个文件,加载定位js 在vue页面中使用 需求:希望网站显示当前城市 腾讯前端定位组件 key的申请, ...

  3. Vue PC端框架和Vue移动端UI框架

    Vue PC端框架和Vue移动端UI框架 在学习Vue的过程之中,我发现不管是 BAT 大厂,还是创业公司,Vue 都有着广泛的应用,而且框架层出不穷,学习文档也越来越多,Vue也越来越受欢迎.下面是 ...

  4. Vue pc端适配不同分辨率屏幕

    前言 pc端一般是不需要适配的,因为现在的显示器分辨率一般都是1920*1080(设计图也是),一般不用管. 但是有一种情况你的设计图是1920*1080,开发完了.发现别人设备因为某些原因不是这个分 ...

  5. VUE PC端可拖动悬浮按钮改进

    VUE PC端可拖动悬浮按钮改进 之前发过一篇悬浮球的,但是那个不太好用,鼠标移动过快会脱标,就很难受,最近又改了一下,这是加了个监听,拖动结束的时候改变top和left,应该还能改进,欢迎大佬们提出 ...

  6. 使用微信小程序扫码登录系统PC端web的功能

    1.项目说明: 项目PC端(vue单页面应用,前后端分离).移动端(微信小程序)共用同一Java Springboot服务.小程序可以直接获取微信手机号登录,不需要密码,因为系统黙认密码是随机的,因此 ...

  7. vue pc端web页面微信支付和支付宝支付

    业务场景介绍: pc端支持微信支付 [ Native支付官方API] && 支付宝支付 [电脑网站支付官方API ] 订单生成逻辑:前端请求后端提交订单,后端去和微信或者支付宝对接生成 ...

  8. PC端QQ“频道”功能关不掉?这么做太简单

    QQ 频道被 QQ 强制捆绑, 很多人用不到, 而且还不能完全免打扰, 点击消息的时候, QQ 频道就会跳出来, 非常的烦人.你只需要: [打开手机版QQ]--[设置]--[辅助功能]--[主页底部导 ...

  9. 【vue+pc端】实现微信扫码登录pc端,后端通过微信开发平台,前端生成二维码(仅供参考)

    这两周的需求是通过微信扫码登录pc端,刚定下需求原型图还没出来前,后端特意发了微信开发平台的链接给我,关于如何生成二维码的文档,以及扫码跳转后如何传code给他. 请戳这里准备工作|微信开放文档 我最 ...

最新文章

  1. 你的组织为自动化测试做好准备了吗?
  2. matlab 如何画二维图形,Matlab 学习 画图篇 一 二维图形
  3. html视频位置控制器,html5中返回音视频的当前媒体控制器的属性controller
  4. Android日志[基础篇]Android Log日志输出
  5. 通过javascript在网页端生成zip压缩包并下载
  6. seaborn—sns.residplot绘制线性回归的残差
  7. Java线程唤醒与阻塞的定义与使用方法
  8. 有哪些让程序员受益终生的建议
  9. 在线作图|2分钟绘制一张精美的火山图(Volcano Plot)
  10. 狂神SpringBoot静态资源文件
  11. contest8 CF614 div2 oox?? oooox ooooo
  12. 软件测试学习心得-5
  13. configmap资源简介和应用
  14. git pull 时出现:There is no tracking information for the current branch. Please specify which branch...
  15. 北京市社会保险个人权益记录(参保人员缴费信息)-社保定制
  16. multimap 的使用例子
  17. mysql - sql语句 之 mysql错误代码大合(转载)
  18. 《曾有一个人 爱我如生命》——普希金诗词
  19. AutoHotKey脚本:帝国时代(罗马复兴)秘籍快速输入
  20. 《研磨设计模式》 配套源代码

热门文章

  1. 终极解码去除快进快退关键帧的问题
  2. C++给出圆的半径,求圆的直径、周长和面积
  3. MTK平台TP驱动框架解析
  4. 戴尔台式计算机规格型号怎么查,戴尔台式机型号怎么样查看
  5. 【汽车篇】01. 行车记录仪自动保存 ❀ 特斯拉 Model 3
  6. [Topcoder SRM 590]Fox And City(网络流建模)
  7. 知识工程课程实践——知识库问答
  8. Java程序员英语单词记录
  9. 微信之父张小龙:怎样做简单的产品经理?
  10. 掌上辅材面试php,掌上辅材下载_掌上辅材APP手机最新版安装 - 风云下载