Vue视频直播,解决Web端+小程序端同时播放问题

本文涉及的产品
视频直播,500GB 1个月
播放器SDK+超低延时直播RTS组合试用套餐,播放器+流量+转码 1个月
播放器SDK+直播LIVE组合试用套餐,播放器+流量+转码 1个月
简介: Vue视频直播,解决Web端+小程序端同时播放问题

一、Web端实现

Web端是vue2,用的是LiveQing,支持多种格式视频播放(我这里测试的m3u8和rtmp格式),可以去官网(https://www.liveqing.com/docs/download/LiveQing.html)看。
首先安装插件

npm install --save @liveqing/liveplayer
AI 代码解读

然后在vue.config.js里面加上如下内容:

const CopyWebpackPlugin = require('copy-webpack-plugin')
module.exports = {
   
   
    configureWebpack: {
   
   
        plugins: [
            new CopyWebpackPlugin([
                {
   
    from: 'node_modules/@liveqing/liveplayer/dist/component/crossdomain.xml'},
                {
   
    from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer.swf'},
                {
   
    from: 'node_modules/@liveqing/liveplayer/dist/component/liveplayer-lib.min.js', to: 'js/'}
            ])
        ]
    }
 }
AI 代码解读

如果上面的方法不起作用的话,可以把上面三个文件crossdomain.xmlliveplayer.swfliveplayer-lib.min.js 丢到public目录
image.png

然后在页面上增加播放控制,具体代码如下:

<template>
    <div class="page-container">
        <LivePlayer
            ref="livePlayer"
            :video-title="obj.title"
            :videoUrl="obj.videoUrl"
            @snapOutside="snapOutside"
            @ended="ended"
            fluent
            :autoplay="autoplay"
            live
            stretch
            :poster="obj.pictures"
        />
    </div>
</template>
<script>
    import LivePlayer from '@liveqing/liveplayer'
    export default {
   
   
        name: 'Dir',
        components: {
   
   
            LivePlayer
        },
        data() {
   
   
            autoplay: true,
            obj:{
   
   },
        }, 
        methods:{
   
   
            getData(){
   
   
                // 访问后台获取视频直播详情
                this.$http.get(url).then(res=>{
   
   
                    this.obj = res.data
                })
            },
            pause: function () {
   
   
                this.$refs.livePlayer.pause();
            },
            play: function () {
   
   
                this.$refs.livePlayer.play();
            },
            ended: function () {
   
   
                console.info('ended......')
            },
            snap: function () {
   
   
                this.$refs.livePlayer.snap();
            },
            snapOutside: function (snapData) {
   
   
                console.info(snapData)
            }
        },
        mounted() {
   
   
            this.$nextTick(() => {
   
   
                //获取视频直播详情
                this.getData()
            })
        }
   }
</script>
AI 代码解读

以上就是Web端视频直播的实现了

二、小程序端

小程序用的框架是美团的mpvue,但无法使用LiveQing这种靠操作DOM实现的方式来完成。最后是使用了小程序官方的live-player,可点击这里查看官方文档。目前仅支持 flv, rtmp 格式视频流。

需要注意的是在模拟器无法播放,模拟器上会呈现黑屏,只能在真机上调试

首先需要在公众号平台上开通音视频直播能力,
image.png

再把后台接口地址、视频直播地址域名添加到微信的域名信息设置。

具体代码如下:

<template >
  <div class="page-detail">
    <live-player style="width:100%;225px;" catchtouchmove :src="obj.videoUrl" mode="live" autoplay bindstatechange="statechange" binderror="error" bindfullscreenchange="fullscreenchangemethod" id="player" />
 </div>
</template>

<script>
export default {
   
   
    data() {
   
   
      return {
   
   
        obj:{
   
   },
        moduleName:'LiveVideo',
        player: null
      }
    },   
    onLoad(option){
   
   
      var that = this;
      that.player = wx.createLivePlayerContext("player"); 
      that.getData();
    },
    methods: {
   
   
      statechange(e) {
   
   
        console.log('live-player code:', e.detail.code)
      },
      error(e) {
   
   
        console.error('live-player error:', e.detail.errMsg)
      },
      isExsit(res) {
   
   
        if (res != null && res != '' && res != 'null') {
   
   
          return true
        }
        return false
      },
      getData(){
   
   
        var that = this;
        wx.request({
   
   
          url: _url, //后台获取视频直播详情地址
          method: 'GET', //方法POST、PUT、DELETE、GET
          header: {
   
    //请求头
            'content-type': 'application/json',
            'Authorization': that.globalData.token
          },
          success(res){
   
   
            that.obj = res.data.data
          }
        })
      },
    }
  }    
</script>
AI 代码解读
目录
打赏
0
0
0
0
108
分享
相关文章
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
1116 1
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
96 4
深入探索 Vue.js:构建现代 Web 应用的利器
【10月更文挑战第11天】深入探索 Vue.js:构建现代 Web 应用的利器
80 1
如何使用Vue.js构建响应式Web应用
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用
如何使用Vue.js构建响应式Web应用程序
【10月更文挑战第9天】如何使用Vue.js构建响应式Web应用程序
前端开发趋势:从Web Components到Vue.js
【10月更文挑战第9天】前端开发趋势:从Web Components到Vue.js
从零到精通:揭秘 Hibernate 构建持久层服务的全过程,你离数据持久化大师还有多远?
【8月更文挑战第31天】本文详细介绍了如何从零开始使用 Hibernate 构建一个持久层服务。首先,通过在 Maven 项目中添加必要的依赖,确保项目具备使用 Hibernate 的条件。接着,配置 `hibernate.cfg.xml` 文件以连接 MySQL 数据库,并设置了基本属性。然后定义了一个简单的 `User` 实体类及其映射关系。此外,还创建了一个 `HibernateUtil` 工具类来管理 `SessionFactory`。
69 0
服务器端渲染新浪潮:用Vue.js和Nuxt.js构建高性能Web应用
【8月更文挑战第30天】在现代Web开发中,提升应用性能和SEO友好性是前端开发者面临的挑战。服务器端渲染(SSR)能加快页面加载速度并改善搜索引擎优化。Vue.js结合Nuxt.js提供了一个高效框架来创建SSR应用。通过安装`create-nuxt-app`,可以轻松创建新的Nuxt.js项目,并利用其自动路由功能简化页面管理。Nuxt.js默认采用SSR模式,并支持通过`asyncData`方法预取数据,同时提供了静态站点生成和服务器端渲染的部署选项,显著提升用户体验。
162 0
哇塞!Vue.js 与 Web Components 携手,掀起前端组件复用风暴,震撼你的开发世界!
【8月更文挑战第30天】这段内容介绍了Vue.js和Web Components在前端开发中的优势及二者结合的可能性。Vue.js提供高效简洁的组件化开发,单个组件包含模板、脚本和样式,方便构建复杂用户界面。Web Components作为新兴技术标准,利用自定义元素、Shadow DOM等技术创建封装性强的自定义HTML元素,实现跨框架复用。结合二者,不仅增强了Web Components的逻辑和交互功能,还实现了Vue.js组件在不同框架中的复用,提高了开发效率和可维护性。未来前端开发中,这种结合将大有可为。
274 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等