hls流视频,m3u8格式播放

要想使用videojs我们势必是需要安装videojs的, 而且在生产环境中我们也需要依赖它, 所以如下

安装对应的插件依赖

npm install video.js -S
npm install videojs-flash videojs-contrib-hls -S
yarn add video.js -S
yarn add videojs-flash videojs-contrib-hls -S

我们打开Vue工程中的主入口main.js进行引入
// 引入videojs,以下引入了rtmp与hls流的视频

import Video from 'video.js';
import 'video.js/dist/video-js.css';
import 'videojs-flash';//插件
import hls from 'videojs-contrib-hls';
Vue.prototype.$video = Video;
Vue.use(hls);

实例:

<video id="video" class="video-js vjs-default-skin vjs-big-play-centered" ></video>

//methods中定义一个方法
loadVideo(name) {
      //这个m3u8链接我也是网上废了好大劲找到的
      const srcUrl='https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8';
      const currentInstance = this.$video(document.getElementById(name), {
        autoplay: true, // 是否自动播放
        controls: true, // 是否显示控件
        muted: true,//静音,才能开启自动播放
        loop:true
      });
      if (/\.m3u8$/.test(srcUrl)) {
        currentInstance.src({
          src:srcUrl,
          type: "application/x-mpegURL" // 告诉videojs这是一个hls流类型的视频
        });
      } else if (/\.mp4$/.test(srcUrl)) {
        currentInstance.src({
          src:srcUrl,
          type: "video/mp4" // 告诉videojs这是一个mp4流类型的视频
        });
      } else if(/\.flv$/.test(srcUrl)){
        currentInstance.src({
          src: "srcUrl",
          type: "rtmp/flv"
        });
      }
    }



//多组视频渲染代码

//html
  <video :id="'rtmpVideo'+inx" class="video-js shzy_vio">
        <source :src='item.url' type="application/x-mpegURL" />
      </video>
//js
let elementList = document.querySelectorAll(".video-js");
      this.element = elementList.length; //videojs 数量赋值
      for (let index = 0; index < elementList.length; index++) {
        let id = elementList[index].getAttribute("id");
        this.$video(
          id,
          {
            autoplay: true, //自动播放
            muted: true, // 是否静音,
            controls: false, //控制条
            techOrder: ["html5", "flash"], //设置flash播放
            language: "en", // 初始化语言
            preload: "auto" // 预加载
          },
          function() {
            this.one("playing", function() {
              // 监听播放
              console.log("成功");
            });
            this.one("error", function(error) {
              // 监听错误
              console.error("监听到异常,错误信息---", error);
            });
          }
        );
      }

控制条调整:只保留全屏、音量、进度、画中画

            controlBar: {
              // 自定义按钮的位置
              children: [
                {
                  name: "playToggle"
                },
                {
                  name: "progressControl"
                },
                {
                  name: "currentTimeDisplay"
                },
                {
                  name: "timeDivider" //时间进度条
                },
                {
                  name: "durationDisplay"
                },
                {
                  name: "volumePanel", // 音量调整方式横线条变为竖线条
                  inline: false
                },
                {
                  name: "pictureInPictureToggle" //画中画播放模式
                },
                {
                  name: "fullscreenToggle"
                }
              ]
            }

在mounted中调用loadVideo(“video”),就可播放了

目前发现video必须开启muted:true,否则视频不自动播放;说是浏览器的问题,需求上需要开启静音播放,没再研究,有懂的小伙伴留言啊,求教!!!

更新:231214:接到一个音频播放报警功能,默认浏览器是禁止播放的,但是可以给电脑配置允许自动播放的网址;具体配置路径:设置–隐私和安全–网站设置–更多内容设置–声音–允许播放声音(添加网址ip或者域名)。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值