当前位置: 首页 > article >正文

阿里云直播Web

官方文档:Web播放器SDK常见问题_视频点播(VOD)-阿里云帮助中心

bug:播流的不稳定,直播总会进入 onM3u8Retry 监听,用户端就会黑屏,(但其实并没有关播,正常关播进入的是pause这个监听)目前没有解决。想到的方案是一旦进入这个监听,就强制重刷页面,再次获取直播详情,但还没有具体实施。

<!-- index.html需要引入的直播文件 -->
<link rel="stylesheet" href="https://g.alicdn.com/apsara-media-box/imp-web-player/2.26.0/skins/default/aliplayer-min.css" />
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/apsara-media-box/imp-web-player/2.26.0/aliplayer-min.js"></script>
<!-- 微信浏览器自动播放 -->
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<div
 class="firstContent"
 :style="{ height: innerHeight }"
 >
  <div class="prism-player" id="player-con" style="height: 100%"></div>
</div>
let player = ref("");
// 判断安卓端 ios端
let isAndroid = ref(false);
let isIOS = ref(false);
// 这个方法在获取直播详情的接口中 如果正在直播 并且有播流的情况下调用并赋值
function checkPlatform(iosLiveUrl, AndroidLiveUrl) {
  const userAgent = navigator.userAgent || navigator.vendor || window.opera;
  if (
    userAgent.match(/iPad/i) ||
    userAgent.match(/iPhone/i) ||
    userAgent.match(/iPod/i)
  ) {
    isIOS.value = true;
    var ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/micromessenger/i) == "micromessenger") {
      // 微信浏览器环境(实现在微信浏览器自动播放)
      wx.config({
        // 配置信息, 即使不正确也能使用 wx.ready
        debug: false, //false代表关闭调试模式,true代表开启调试模式
        appId: "", //appId
        timestamp: 1, //生成签名的时间戳
        nonceStr: "", //生成签名的随机串
        signature: "", //签名
        jsApiList: [], //需要使用的JS接口列表
      });
      wx.ready(function () {
        // 在此处初始化播放器
        liveStart(iosLiveUrl);
      });
    } else {
      liveStart(iosLiveUrl);
    }
  } else if (userAgent.match(/Android/i)) {
    isAndroid.value = true;
    liveStart(AndroidLiveUrl);
  } else {
    // PC端
    liveStart(iosLiveUrl);
  }
}
// 播流URL
function liveStart(liveFlvUrl) {
  player.value = new Aliplayer(
    {
      id: "player-con",
      source: liveFlvUrl,
      width: "100%",
      height: "56vw",
      // autoplay: true, // 延迟播放
      isLive: true,
      rePlay: false,
      playsinline: true,
      preload: true,
      enableStashBufferForFlv: true,
      stashInitialSizeForFlv: 32,
      controlBarVisibility: "hover",
      useH5Prism: true,
      x5LandscapeAsFullScreen: false,
      enableWorker: false,
      mute: false,
      skinLayout: [
        { name: "bigPlayButton", align: "cc" }, // 大播放按钮位置调整
        { name: "infoDisplay", align: "brabs", x: -100, y: -100 }, // "设置为静音"位置调整
      ],
      skinLayoutIgnore: [
        "infoDisplay", // 隐藏“设置为静音”信息提示内容
      ],
    },
    function (player) {
      //初始化后,手动对视频进行静音处理(这样设置之后,按音量键也依旧是静音)
      // player.mute();
      // 这种对直播没效果
      // player.setVolume(0.5);
      // 监听播放
      player.on("play", function () {
        console.log("视频开始播放");
      });

      // 监听暂停
      player.on("pause", function () {
        console.log("视频暂停");
        // 这个方法是获取直播详情 如果直播结束 详情接口会返回liveStatus == 2 后面就是具体公司业务处理了
        getLiveDetail();
      });

      player.on("onM3u8Retry", function () {
        // 总是会莫名其妙到这步 直播没有结束 但是用户看到的是黑屏 刷新页面和重新进入直播间可以解决
        // 这里我想到的方案是页面强制刷新 没有尝试过 可以试下
        console.log("主播暂时离开,请稍后......");
        // 这个方法是获取直播详情
        getLiveDetail();
      });

      // 监听结束
      player.on("ended", function () {
        console.log("视频播放结束");
      });

      // 监听加载中
      player.on("waiting", function () {
        console.log("视频加载中");
      });

      // 监听播放错误
      player.on("error", function (e) {
        console.log("视频播放出错");
      });
    }
  );
}


http://www.kler.cn/a/504399.html

相关文章:

  • Spring Boot 2 学习指南与资料分享
  • 【汇编】汇编编程中的指令传参方式
  • nexus搭建maven私服
  • FLASK 上传文件
  • 新手如何练习SQL?|掌握
  • 华为2024嵌入式研发面试题
  • MTK6768 Android13 亮度条均匀调节实现
  • 一套UI精美、控件丰富、多主题的WinForm开源界面库
  • 【Uniapp-Vue3】pages设置页面路径及窗口表现
  • 寒假规划(服创比赛)
  • Nginx 访问状态统计功能配置与使用方法(status)
  • 【Docker】Docker与Docker compose离线安装
  • 宜自动化处理的五件事
  • PyTorch 时间序列与信号处理全解析:从预测到生成
  • 力扣 子集
  • uni-app h5修改浏览器导航栏的 title以及icon
  • 近红外数据预处理和简单分析matlab
  • 3、Go中的注释
  • 隐私计算,构建安全的未来数据空间
  • Docker Desktop 中安装 MySQL 并开启远程访问的详细教程
  • spring-mvc源码分析v3.3.0
  • C++并发编程之无锁数据结构及其优缺点
  • 基于springboot的幼儿园管理系统系统
  • 蓝桥杯 男女搭配
  • Golang学习笔记_25——协程
  • 服务器一次性部署One API + ChatGPT-Next-Web