Vue接入hls/m3u8的直播视频

前言

最近做了一个后台系统,需要调取工厂监控视频流显示在前端的页面上,其中遇到了一些坑,在这里做个记录,希望对前端小伙伴有所帮助吧!废话不多说了,直接开搞

互联网网络流媒体简介

这块我也不是很懂,博大精深,不在这扯皮了,大家只需要知道常见的几种流媒体格式就行,至于发展与演变,里面的专业知识,我也不懂,主要的流媒体格式有RTSP,RTMP,HLS,WebRtc,这些足够解决日常开发了

播放HLS格式的视频

为什么要选择HLS格式的视频呢?因为浏览器没有办法支持播放RTSP,无法识别这种类型的视频流,RTMP格式的视频是需要借助Flash否则也是无法播放,但是Chrome 88彻底禁用Flash,于是跟同事商量选择了HLS,接下里就是踩坑的开始

安装

前端采用插件video.js

npm install --save video.js
复制代码

现在下载的版本应该是7.0以上的,这个是有用的,因为这个版本以上的不需要因为安装videojs-contrib-hls插件,它是用来解析HLS视频的,但是只要你的版本在7.0以上就无需安装,直接使用

"video.js": "^7.19.2",
复制代码

实现

<template>
  <div>
    <video
      id="my-video"
      class="video-js vjs-default-skin"
      controls
      preload="auto"
      width="500px">
      <source :src="srcUrl" />
    </video>
  </div>
</template>

<script>
import videojs from "video.js";
  export default {
    props:{
      "srcUrl":{
        type:String,
        default:'http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8'
      }
    },
    mounted() {
        this.getVideo();
    },
    methods:{
      getVideo() {
        videojs(
            "my-video",
            {
                bigPlayButton: true,
                textTrackDisplay: false,
                posterImage: true,
                errorDisplay: false,
                controlBar: false
            },
            function() {
                this.play();
            }
        );
      },
}
  }
</script>
复制代码

main.js 引入样式

import 'video.js/dist/video-js.css'
复制代码

这就是所有的代码,这里已经封装成组件了,直接用就行,传入地址即可,样式自己修改吧!

这些都是开发中我从网上搜集的,第一做一脸茫然,百度上的东一句西一句,代码拿过来也是无法播放,于是直到我看到了这个

WechatIMG48.jpeg 果真是这样,只需要将vlc的编码器信息改为h264,一切都是顺利成章了,当然这个需要联系给你视频地址的那个人进行配合,网上我看到的其他方式我测试都是不可以播放的,好了,就是这样,希望对遇到同样问题的小伙伴有所帮助吧!!!

夫学须静也,才须学也,非学无以广才,非志无以成学。淫慢则不能励精,险躁则不能治性。年与时驰,意与日去,遂成枯落

猜你喜欢

转载自juejin.im/post/7119024672569557029