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

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

一、Web端实现

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

npm install --save @liveqing/liveplayer

然后在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/'}
            ])
        ]
    }
 }

如果上面的方法不起作用的话,可以把上面三个文件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>

以上就是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>
相关文章
|
JavaScript 前端开发 数据安全/隐私保护
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
2551 1
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `&lt;swiper&gt;` 实现,二是利用 Nut UI 的 `&lt;nut-swiper&gt;` 组件实现。
500 2
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
小程序 开发者
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
本文介绍了如何在Taro项目中实现自定义tabBar。首先,在`app.config.ts`中设置`custom: true`并配置`tabBar`。
920 0
Taro@3.x+Vue@3.x+TS开发微信小程序,使用自定义tabBar
|
JavaScript 前端开发
【前端web入门第一天】03 综合案例 个人简介与vue简介
该网页采用“从上到下,先整体再局部”的制作思路,逐步分析并编写代码实现个人简介页面。内容涵盖尤雨溪的背景、学习经历及主要成就,同时介绍其开发的Vue.js框架特点。代码结构清晰,注重细节处理,如使用快捷键提高效率,预留超链接位置等,确保最终效果符合预期。
288 7
|
JavaScript 小程序 开发者
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
uni-app开发实战:利用Vue混入(mixin)实现微信小程序全局分享功能,一键发送给朋友、分享到朋友圈、复制链接
2040 0
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
本文介绍了Taro中`useShareAppMessage`的使用方法,需在页面配置`enableShareAppMessage: true`并重新编译。
738 0
Taro@3.x+Vue@3.x+TS开发微信小程序,设置转发分享
|
小程序 数据安全/隐私保护
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
在 `src/http` 目录下创建 `request.ts` 文件,并配置 Taro 的网络请求方法 `Taro.request`,支持多种 HTTP 方法并处理数据加密。
566 0
Taro@3.x+Vue@3.x+TS开发微信小程序,网络请求封装
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
本文介绍如何在Taro项目中使用Nut UI的`&lt;nut-uploader/&gt;`组件实现图片上传功能,并通过示例代码展示了自定义上传逻辑的方法。
557 0
Taro@3.x+Vue@3.x+TS开发微信小程序,上传文件
|
小程序
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
本文介绍如何在Taro项目中配置深色模式。通过在`src/app.config.ts`设置`darkmode`选项和在`theme.json`中定义主题变量,可以实现跟随系统主题的界面风格切换。
449 0
Taro@3.x+Vue@3.x+TS开发微信小程序,根据系统主题展示不同样式(darkMode)
|
7月前
|
监控 前端开发 小程序
陪练,代练,护航,代打小程序源码/前端UNIAPP-VUE2.0开发 后端Thinkphp6管理/具备家政服务的综合型平台
这款APP通过技术创新,将代练、家政、娱乐社交等场景融合,打造“全能型生活服务生态圈”。以代练为切入点,提供模块化代码支持快速搭建平台,结合智能匹配与技能审核机制,拓展家政服务和商业管理功能。技术架构具备高安全性和扩展性,支持多业务复用,如押金冻结、录屏监控等功能跨领域应用。商业模式多元,包括交易抽成、增值服务及广告联名,同时设计跨领域积分体系提升用户粘性,实现生态共生与B端赋能。
745 12