vue 播放视频流,vue实现视频播放

  vue 播放视频流,vue实现视频播放

  本文主要介绍vue加载视频流,实现直播功能的过程,有很好的参考价值,希望对大家有所帮助。如有错误或不足之处,请不吝赐教。

  

目录

  前言一、什么是视频流?2.vue加载rtmp视频流1。方法一:video.js2方法二:ckplayer 3。vue加载hls视频流1.index.html中的2.video-player.vue文件。

  

前言

  最近在项目里有一个功能就是播放监控现场的图像和视频(类似直播),然后对此做一个记录和总结!

  在这个函数中,后台最初给出了rtmp格式的视频流。在网上搜索了几种方式,发现rtmp视频流需要使用flash player。但是各大浏览器都抛弃了flash,所以最后改用hls视频流,终于完成了这个功能!(如果只是想要一个成功的代码,请直接看:3。vue加载hls视频流)

  

一、视频流是什么?

  视频流:视频流其实就是流媒体,是指将一系列数据压缩,通过网段发送,即时传输,用于观看音视频的技术。流媒体一般用于监控、直播等实时广播功能。流媒体协议:流媒体协议是一种标准化的交付方式,用于将视频分成多个块,发送给视频播放器,播放器重组播放。常见的有rtmp、hls、hds、mss、MPEG-DASH等。视频格式(format):视频格式是指视频文件格式(容器格式)。常见的容器格式包括. mp4、 m4v、avi,mov等。三个定义这里不再赘述,想了解更多的朋友可以自己去了解。Rtmp视频流实际上是rtmp流媒体协议生成的流媒体;hls视频流也是如此(这种视频流的格式一般由后台控制)

  

二、vue加载rtmp视频流

  

1.方法一:video.js

  npm安装-保存vue-视频播放器

  npm安装-保存视频-flash

  模板

  div class=box

  section id= video class= video-js vjs-default-skin ref= viodeRef /section

  /div

  /模板

  脚本

  从“video.js”导入视频

  导入 video.js/dist/video-js.min.css

  导出默认值{

  名称:“视频播放盒”,

  已安装(){

  this.player=Video(video ,{

  //确定播放器是否有用户可以与之交互的控件。不,启动视频播放的唯一方法是使用autoplay属性或通过播放器API。

  控制:正确,

  //自动播放属性,静音:无声播放

  静音:假,

  自动播放:没错,

  //建议浏览器是否应该在视频加载元素后立即开始下载视频数据。

  预加载:“自动”,

  //设置视频播放器的显示宽度(以像素为单位)

  宽度:“800像素”,

  //设置视频播放器的显示高度(以像素为单位)

  高度:“500像素”,

  //海报: https://static.shuxuejia.com/img/video _ image . png ,//封面图片

  来源:[{

  src: rtmp://58 . 200 . 131 . 2:1935/live TV/CCTV 3 ,

  类型:“视频/rtmp”

  }],

  播放速率:[0.5,1,1.5,2] //以双倍速度播放

  },function onPlayerReady() {

  Video.log(你的播放器准备好了!);//比如:播放音量1的请求

  this.on(ended ,function() {

  Video.log(Awww.这么快就结束了?);

  });

  });

  //this . my player . src( rtmp://10 . 15 . 3 . 31:1935/live/openUrl/qud plmm )

  //this . my player . load( rtmp://10 . 15 . 3 . 31:1935/live/openUrl/qud plmm )

  },

  销毁前(){

  if (this.player) {

  this.player.dispose()

  }

  },

  }

  /脚本

  样式范围的语言=scss 。方框{

  宽度:100%;

  身高:100%;

  显示器:flex

  对齐-项目:居中;

  justify-content:居中;视频{

  边距:0自动;

  }

  }

  /风格

  

2.方法二:ckplayer

  因为我试过因为flash原因无法使用,所以已经全部删除,没有部分截图。用文字描述一下就可以了,感兴趣的朋友可以自己搜索一下。

  第一步:官网下载超酷猫白血病病毒播放器第二步:将下载好的文件夹解压后放到项目中的静态(静态资源文件夹)下第三步:在index.html中对应引入ckplayer.js文件第四步:创建播放视频的某视频剪辑软件文件,代码如下:模板

  差异

  标签播放器播放器插件某视频剪辑软件使用演示/标签

  div id=video/div

  /div

  /模板

  脚本

  导出默认值{

  名称:" ckplayerPlugin ",

  data () {

  返回{

  }

  },

  已安装:函数(){

  //挂载完成后进行

  var videoObject={

  容器: #video ,//容器的身份或类名

  变量:"玩家",//播放函数名称

  已加载:" loadedHandler ",//当播放器加载后执行的函数

  loop: true,//播放结束是否循环播放

  CK轨道:静态/CK球员/材料/SRT。 SRT ,//字幕文件

  海报:静态/CK播放器/材料/海报。 jpg ,//封面图片

  预览:{ //预览图片

  文件:[静态/CK播放器/素材/我的梦想_ en 1800 _ 1010 _ 01。 png ,静态/CK播放器/素材/我的梦想_ en 1800 _ 1010 _ 02。png ],

  比例:2

  },

  配置: ,//指定配置函数

  调试:真,//是否开启调试模式

  拖动:"开始",//拖动的属性

  seek: 0,//默认跳转的时间

  //广告部分开始

  广告前面:“http://w . CK球员。com/yytf/swf/front 001。swf,http://w . CK玩家。com/yytf/swf/front 002。 swf ,//前置广告

  adfront时间:“15,15”,

  adfrontlink: ,

  广告暂停:“http://w . CK播放器。com/yytf/swf/pause 001。swf,http://w . CK玩家。com/yytf/swf/pause 002。主权财富基金,

  adpausetime:"5,5 ",

  adpauselink: ,

  广告词:“http://w . CK球员”。com/yytf/swf/insert 001。swf,http://w . CK玩家。com/yytf/swf/insert 002。主权财富基金,

  adinsertime: 10,10 ,

  adinsertlink: ,

  插入时间: 10,80 ,

  阿德恩:“3358w . CK球员。com/yytf/swf/end 001。swf,http://w . CK玩家。com/yytf/swf/end 002。主权财富基金,

  adend时间:“15,15”,

  adendlink: ,

  //广告部分结束

  promptSpot: [ //提示点

  {

  单词: 提示点文字01,

  时间:30

  },

  {

  单词: 提示点文字02,

  时间:150

  }

  ],

  视频:[

  [ http://img。ksbbs。 com/asset/Mon _ 1703/05 cacb4 e 02 f 9d 9 e . MP4 , video/mp4 ,中文标清, 0],

  [ http://img。ksbbs。DDD第九季第五集。 MP4 ,视频/mp4 ,中文高清, 0],

  [ http://img。ksbbs。com/asset/Mon _ 1703/EB 048d 7839442d 0。 MP4 ,视频/mp4 ,英文高清, 10],

  [ http://img。ksbbs。com/asset/Mon _ 1703/d 30 e 02 a 5626 c 066。 MP4 ,视频/mp4 ,英文超清, 0]

  ]

  };

  //定义一个对象

  var player=新CK播放器(视频对象);

  }

  }

  /脚本

  样式范围

  #视频{

  宽度:600像素

  高度:400像素

  边距:0px自动;

  }

  /风格

  总结:经检验,以上两种方法加载均需要闪光的支持,然而目前大众浏览器均已放弃闪光,所以建议使用下方流媒体视频流播放;

  

三、vue加载hls视频流

  

1.index.html中

  添加:

  脚本src= https://cdn。jsdelivr。net/NPM/HLS。js @ latest /脚本

  

2.video-player.vue文件

  模板

  div class=hls

  视频id=视频静音/视频

  /div

  /模板

  脚本

  导出默认值{

  名称:“hls-video”,

  组件:{

  },

  data() {

  返回{

  视频:空,

  hls:空

  }

  },

  道具:{

  选择标准信息:{

  类型:对象,

  必填:真

  }

  },

  观察:{

  //视频弹窗时如果弹窗已存在,重新加载视频流

  选择标准信息。 mourl :function(oldV,newV){

  如果(newV!=oldV){

  this.initVideo()

  }

  }

  },

  已安装(){

  this.initVideo()

  },

  销毁(){

  this.reset()

  },

  方法:{

  //组件销毁时,调用该方法,停止请求;分遣队和停止装载为流媒体官网方法

  重置(){

  这个。HLS。detachmedia(这个。视频)

  this.hls.stopLoad()

  },

  //初始化录像

  initVideo () {

  这个。视频=文档。getelementbyid(视频)

  //浏览器是否支持流媒体

  if(Hls.isSupported()) {

  //如果流媒体已存在,先清空

  如果(this.hls){

  this.reset()

  }否则{

  this.hls=新hls()

  }

  //this.selectStdInfo.mourl为父组件传给该子组件的视频全球资源定位器(统一资源定位器)

  这个。HLS。loadsource(this。选择标准信息。摩尔)

  这个。HLS。附加媒体(这。视频)

  这个. Hls on(Hls .事件。MANIFEST_PARSED,()={

  this.video.play()

  });

  } else if(视频。canplaytype( http://kbs-独岛。gscdn。com/独岛_ 300/_ definit _/独岛_ 300。流/播放列表。m3 u8 ){

  //不支持hls,支持苹果原生

  this.video.src=

  这个。视频。addevent侦听器( loaded metadata ,function() {

  this.video.play()

  })

  }

  }

  },

  }

  /脚本

  样式范围的语言=scss 。hls{

  宽度:100%;

  身高:100%;

  显示器:flex

  对齐-项目:居中;

  对齐-内容:居中;

  #视频{

  宽度:100%;

  边距:0自动;

  }

  }

  /风格

  以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: