video.js播放m3u8或者flv格式的推流直播

//asyncAddTool 动态的将外部js插入到body底部,并且返回Promise,js下载完成返回true
export default url => {
  //页面上是否已经有了一样的文件,如果有则不再引入
  const AllscriptTags = document.querySelectorAll("script");
  for (let index = 0; index < AllscriptTags.length; index++) {
    const element = AllscriptTags[index];
    if (element.src === url) {
      return Promise.resolve(true);
    }
  }
  return new Promise(function(resolve, reject) {
    const el = document.createElement("script"); // 创建 script 元素
    el.src = url; // url 赋值
    el.async = false; // 保持时序
    const loadCallback = function() {
      // 加载成功回调
      el.removeEventListener("load", loadCallback);
      resolve(true);
    };
    const errorCallback = function(evt) {
      // 加载失败回调
      el.removeEventListener("error", errorCallback);
      //   var error = evt.error || new Error("Load javascript failed. src=" + url);
      resolve(false);
    };
    el.addEventListener("load", loadCallback);
    el.addEventListener("error", errorCallback);
    document.body.appendChild(el); // 节点插入
  });
};


let player=null ,//播放器实例
//播放器相关
const initVideo=async ()=>{
    //video.js主文件  videojs版本7.5左右,过于高版本hls不匹配了
    const videoState = await asyncAddTool(
            "https://cdn.bootcdn.net/ajax/libs/video.js/7.5.6/video.min.js"
    );

    //以下脚本用于支持flv格式直播,如果不需要flv,可以不加载
    const flvState = await asyncAddTool(
            "https://unpkg.com/flv.js/dist/flv.min.js" //flvjs
    )
    const flvvideojs = await asyncAddTool(
            'https://unpkg.com/videojs-flvjs/dist/videojs-flvjs.min.js' //videoflvjs
    )
    //判断是否全部下载完成
    const fileState = [videoState, hlsState, flvState, flvvideojs].every(
            state => state === true
    );
    if(fileState){
       player = videojs('#videoplay', {//两个参数 video标签元素 相关配置
                    poster:poster,//海报
                    playbackRates: [0.7, 1.0, 1.5, 2.0],//播放速度
                    language: 'zh-CN',
                    notSupportedMessage: "此视频暂时无法播放,请稍后再试",
                    controls: true,
                    techOrder: ['html5', 'flvjs'], //html5模式和flvjs模式
                    fluid:true,//流式布局,适应父元素大小
                    flvjs: { //配置flv相关信息 如果播放flv才配置这个
                      mediaDataSource: {
                        isLive: true, //是否是直播
                        cors: true,//是否跨域
                        withCredentials: false,//是否跨站检测
                     },
                    preload: true,//预加载
                    autoplay: true,//是否自动播放

        });
        const res= awite getVideoLiveUrl() //获取直播间的直播地址
        player.src({
               src: res.data.data.m3u8,
               type: 'application/x-mpegURL', //m38u格式直播推流设置
               //type: "video/x-flv" .//flv格式播放
               //type:"video/mp4" ,//普通mp4格式播放
        );
    }
    
}

注意
//如果需要播放rtmp,需要另外下载videojs-flash,不过现在各大浏览器开始启用flash,所以并不推荐
//Video.js 7之前的版本 必须使用videojs-http-streaming.js插件才可以播放HLS,7以后的版本默认捆绑VHS,可以直接播放hls,videojs-contrib-hls被弃用,所以直接上7.5以上版本

 

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 CSDN 上提供的 video.js 插件来播放 m3u8flv、rtmp 和 RTS 格式视频。首先,确保你已经引入了 video.js 的库文件和相关插件。 对于 m3u8 格式视频,你可以使用 video.js-contrib-hls 插件来支持。你需要在页面中引入以下文件: ```html <link href="//path/to/video-js.min.css" rel="stylesheet"> <script src="//path/to/video.min.js"></script> <script src="//path/to/videojs-contrib-hls.min.js"></script> ``` 然后,你可以在页面中添加一个 video 标签,并使用以下 JavaScript 代码来初始化播放器: ```javascript var player = videojs('my-video'); player.src({ src: 'path/to/video.m3u8', type: 'application/x-mpegURL' }); ``` 对于 flv 格式视频,你可以使用 videojs-flvjs 插件来支持。你需要在页面中引入以下文件: ```html <link href="//path/to/video-js.min.css" rel="stylesheet"> <script src="//path/to/video.min.js"></script> <script src="//path/to/flv.min.js"></script> <script src="//path/to/videojs-flvjs.min.js"></script> ``` 然后,你可以在页面中添加一个 video 标签,并使用以下 JavaScript 代码来初始化播放器: ```javascript var player = videojs('my-video'); player.src({ src: 'path/to/video.flv', type: 'video/flv' }); ``` 对于 rtmp 和 RTS 格式视频,你可以使用 videojs-flash 插件来支持。你需要在页面中引入以下文件: ```html <link href="//path/to/video-js.min.css" rel="stylesheet"> <script src="//path/to/video.min.js"></script> <script src="//path/to/videojs-flash.min.js"></script> ``` 然后,你可以在页面中添加一个 video 标签,并使用以下 JavaScript 代码来初始化播放器: ```javascript var player = videojs('my-video', { techOrder: ['flash'] }); player.src({ src: 'rtmp://path/to/video', type: 'rtmp/flv' }); ``` 记得将上述代码中的路径和文件名替换成你实际使用的视频文件路径和名称。希望这些信息能帮到你!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值