前端vue+xgVIdeo集成rstp流播放

embedded/2024/9/25 10:27:58/

注意:rstp流需要对应的西瓜视频插件

项目:

petition-manager

代码概览:

1. video-player 子  组件

javascript"><template><div id="video-player" class="video-player"></div>
</template>
<script>import Player from 'xgplayer'
import FlvPlugin from 'xgplayer-flv'
import "xgplayer/dist/index.min.css"
export default {props: {url: {// 父组件传过来的视频链接type: String,default: '',},},data() {return {player: null, //实例};},mounted() {console.log('传过来的url:', this.url);// 初始化播放器this.initPlayer();},created() { },// 监听播放路径的变化watch: {url: {handler(newValue, oldValue) {if (!this.player) {this.initPlayer();return;}this.player.src = this.url;},},},methods: {// =========================1,设置播放器必要参数===================initPlayer() {if (!this.url) return console.warn('url is not esist');const config = {id: 'video-player',url: this.url,// fluid: true,isLive: true,plugins: [FlvPlugin],/**倍速播放 */// playbackRate: [0.5, 0.75, 1, 1.5, 2],// defaultPlaybackRate: 1,playsinline: this.isAppleDevice(), // IOS设备设置,防止被浏览器劫持'x5-video-player-type': 'h5', // 微信内置浏览器设置,防止被浏览器劫持'x5-video-orientation': 'portraint',/**画中画 */pip: true,pipConfig: {bottom: 100,right: 100,width: 320,height: 180,},// download: true,/**初始化首帧 */// videoInit: true,// autoplay: true,};//========================== 2,开始实例化======================const player = new Player(config);if (player) {this.player = player;/* 这里注册监听 */// 监听视频开始播放 播放传给父组件的是truethis.player.on('play', () => {this.$emit('triggerEvent', true);});// 监听视频已经暂停 暂停传给父组件的是truethis.player.on('pause', () => {this.$emit('triggerEvent', false);});// 监听 视频退出全屏// this.player.on('exitFullscreen', () => {//   window.scrollTo(0, 0);//   console.log('已经退出全屏了');// });}},// IOS设备设置,防止被浏览器劫持isAppleDevice() {const ua = navigator.userAgent.toLowerCase();return /iphone|ipad|phone|Mac/i.test(ua);},},
};
</script><style></style>

2.父组件中引用:

javascript"><el-dialog :title="title" :visible.sync="openLive" width="700px" height="500px"><video-player-vue :url="url" @triggerEvent="triggerEvent"></video-player-vue></el-dialog>

data  中需要加入  url 属性

方法中需要加入:

javascript"> clickLive() {this.openLive = truethis.url = 'xxxxxxx'},// 监听到子组件传过来的播放状态 true是播放 false是暂停triggerEvent(value) {console.log("是否播放:", value);},

父组件样式:

<style lang="scss" scoped>
.videoPlayer {height: 300px;width: 500px;margin: 0 auto;
}</style>


http://www.ppmy.cn/embedded/15904.html

相关文章

第十四届蓝桥杯ABD题

A、阶乘求和&#xff1a; 【问题描述】 令 S 1! 2! 3! ... 202320232023! &#xff0c;求 S 的末尾 9 位数字。 提示&#xff1a;答案首位不为 0 。 【答案提交】 这是一道结果填空的题&#xff0c;你只需要算出结果后提交即可。本题的结果为一 个整数&#xff0c;在…

Golang | Leetcode Golang题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; func isMatch(s string, p string) bool {for len(s) > 0 && len(p) > 0 && p[len(p)-1] ! * {if charMatch(s[len(s)-1], p[len(p)-1]) {s s[:len(s)-1]p p[:len(p)-1]} else {return false}}if len(p) 0 {retur…

typecho博客的相对地址实现

typecho其中的博客地址,必须写上绝对地址,否则在迁移网址的时候会出现问题,例如页面记载异常 修改其中的 typecho\var\Widget\Options\General.php 中的165行左右, /** 站点地址 */if (!defined(__TYPECHO_SITE_URL__)) {$siteUrl new Form\Element\Text(siteUrl,null,$this-…

网络协议深度解析:SSL、 TLS、HTTP和 DNS(C/C++代码实现)

在数字化时代&#xff0c;网络协议构成了互联网通信的基石。SSL、TLS、HTTP和DNS是其中最关键的几种&#xff0c;它们确保了我们的数据安全传输、网页的正确显示以及域名的正常解析。 要理解这些协议&#xff0c;首先需要了解网络分层模型。SSL和TLS位于传输层之上&#xff0c…

华纳云:怎么防止租用服务器的数据丢失?

要防止租用服务器上的数据丢失&#xff0c;可以采取以下一些措施&#xff1a; 定期备份数据&#xff1a;建立定期备份数据的机制&#xff0c;将重要数据备份到安全的地方&#xff0c;例如云存储服务、外部硬盘或者另一个服务器上。备份频率可以根据数据的重要性和变动频率来确定…

代码随想录算法训练营day34

题目&#xff1a;860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球 参考链接&#xff1a;代码随想录 860.柠檬水找零 思路&#xff1a;本题思路比较容易想&#xff0c;主要对于5,10,20三种情况分别讨论&#xff0c;维护三个变量分别记录目前手中三种钞票…

Spring Boot 加载本地 JAR 包的技术实践

随着微服务架构的兴起&#xff0c;Spring Boot 因其快速构建、易于部署的特性&#xff0c;成为了众多开发者的首选框架。在开发过程中&#xff0c;我们有时需要引入一些不在公共 Maven 仓库中的 JAR 包作为依赖&#xff0c;这时候就需要加载本地的 JAR 包。本文将详细介绍在 Sp…

面试二十二、跳表SkipLists

跳表全称为跳跃列表&#xff0c;它允许快速查询&#xff0c;插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是通过维护一个多层次的链表&#xff0c;且每一层链表中的元素是前一层链表元素的子集&#xff08;见右边的示意图&…