前端FLV视频直播解决方案

项目背景:

1. 后台给出一个地址,持续不断的推送flv视频流。

2.前端需要接收视频流,并寻找合适的播放插件。

一开始:

其实用的是xgplayer(西瓜视频)。

官网地址:西瓜播放器

使用的是直播,flv的插件:西瓜播放器 | xgplayer-flv。

但是无法播放,现象就是一直loading

后来,查了好多资料,发现一个issue:

流数据正常下载,xgplayer-flv无法播放 · Issue #604 · bytedance/xgplayer · GitHub。

和我情况一模一样,但是暂时没有什么解决方案。说明,此路不通

柳暗花明:

找了很久,找到一个万能播放插件 —— Jessibuca

官网地址:Jessibuca

如何使用:

前端如何使用?建议直接下载相关资源,静态引入。

需要下载三个资源,如下图:

怎么找到这三个资源?去官网的network里找找吧,不在多说。

vue中使用详情:

首先,上边的三个文件引入public。在index.html文件中只需要引入jessibuca.js。

<!-- public下的index.html 直接引入js文件-->....<script src="<%= BASE_URL %>jessibuca.js"></script>.....

然后,创建视频播放组件 LiveVideoPlay.vue:

<script>
export default {name: "LiveVideoPlay",props: {// 播放地址playUrl: {type: String,required: true,},// 目标domidid: {type: String,required: true,},},data() {return {player: null,};},methods: {// 初始化视频组件initPlayer() {if (Jessibuca) {this.player = new Jessibuca({container: document.getElementById(this.id), //jessibuca需要容器videoBuffer: 0.2, // 缓存时长isResize: false,loadingText: "疯狂加载中...",useMSE: true,useWCS: true,debug: true,background: "@/assets/icons/svg/no-video.svg",supportDblclickFullscreen: true,showBandwidth: true, // 显示网速operateBtns: {fullscreen: true,screenshot: true,play: true,audio: true,},forceNoOffscreen: true,isNotMute: false,timeout: 10,});//console.log("this.player ----- ", this.player, this.playUrl);this.player.play(this.playUrl);}},},beforeDestroy() {// 销毁视频if (this.player) {this.player.destroy();this.player = null;}},mounted() {this.initPlayer();},
};
</script>
<template><div class="video-player-outer" :id="id"></div>
</template>
<style>
.video-player-outer {width: 100%;height: 100%;
}
</style>

最后,父组件中直接引用:

// 父组件中直接使用该组件<script>
import LiveVideoPlay from "./LiveVideoPlay.vue";
export default {name: '',components: {LiveVideoPlay },data () {return {playUrl1: null,playUrl2: null,showV1: false,showV2: false,}},methods: {handlePlayVideo(v) {if (v == 1) {this.playUrl1 ="https://xxxxxx/live/02.live.flv";this.showV1 = true;} else if (v == 2) {this.playUrl2 ="https://xxxxxx/live/02.live.flv";this.showV2 = true;}},StopPlayVideo(v) {if (v == 1) {this.showV1 = false;} else if (v == 2) {this.showV2 = false;}}, },
}</script><template><div class="box"><div class="video-box-item"><el-button @click="handlePlayVideo(1)">播放视频1</el-button><el-button @click="StopPlayVideo(1)">停止视频1</el-button><LiveVideoPlay v-if="showV1" :playUrl="playUrl1" id="v1" /></div><div class="video-box-item"><el-button @click="handlePlayVideo(2)">播放视频2</el-button><el-button @click="StopPlayVideo(2)">停止视频2</el-button><LiveVideoPlay v-if="showV2" :playUrl="playUrl2" id="v2" /></div></div></template>

如上,可以试一试自己的播放地址是否可以成功播放视频.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/236579.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【10大专题,2.8w字详解】:从张量开始到GPT的《动手学深度学习》要点笔记

《动手学深度学习PyTorch版》复习要点全记录 &#x1f4d8; &#x1f3af; 专注于查漏补缺、巩固基础&#xff0c;这份笔记将带你深入理解深度学习的核心概念。通过一系列精心整理的小专题&#xff0c;逐步构建起你的AI知识框架。 &#x1f9e0; 从最基础的张量操作&#xff0c…

DELL MD3600F更换控制器电池

1、存储左上角闪红灯&#xff0c;管理软件提示控制器1电池故障&#xff0c;需取出控制器更换上新电池。 2、通过管理软件确认两个控制器编号&#xff1b;确认到下面的是控制器1 3、拔掉控制器上插的线&#xff08;SAS线、网线、光纤线&#xff09;&#xff0c;打好标签&#xf…

外贸SEO建站系统有哪些?海洋建站的优势?

外贸SEO建站怎么做比较好&#xff1f;如何做谷歌独立站SEO优化&#xff1f; 外贸企业越来越需要建立自己的在线形象&#xff0c;以吸引更多的潜在客户。而要实现这一目标&#xff0c;外贸SEO建站系统是一种非常有效的手段。那么&#xff0c;外贸SEO建站系统有哪些呢&#xff1…

常见 平滑函数

平滑函数是指具有较为连续和缓和性质的数学函数。这类函数通常在局部小范围内变化不大&#xff0c;避免了突变或者急剧的波动。以下是一些常见的平滑函数&#xff1a; 高斯函数&#xff08;Gaussian Function&#xff09; 高斯函数是一种常见的平滑函数&#xff0c;具有钟形曲…

LeetCode day28

LeetCode day28 由于一点小意外&#xff0c;今天就来搞搞滑动窗口(ง •_•)ง 1423. 可获得的最大点数 几张卡牌 排成一行&#xff0c;每张卡牌都有一个对应的点数。点数由整数数组 cardPoints 给出。 每次行动&#xff0c;你可以从行的开头或者末尾拿一张卡牌&#xff0c;…

五、从0开始卷出一个新项目瑞萨RZN2L之RZT2L BaseProject coremark的移植

感谢来自b站热心帅气的同学分享的RZT2L移植经验总结的md文档 1 需要注意的小点 1.1 使用Flash运行调试前&#xff0c;新板子需要erase 1.2 在线debug&#xff0c;需要修改startup.c 2 coremark工程建立 2.1 工程创建 2.2 src 用户c代码移植 2.3 debug调试 …

HAL TIM2的PWM

main函数跑下面代码就行 懂的就懂&#xff0c;不讲原理&#xff0c;自己看 MX_TIM2_Init(7,999);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_1,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_2,500);__HAL_TIM_SET_COMPARE(&htim2,TIM_CHANNEL_3,500);__HAL_TIM_…

<sa8650>sa8650 qcxser-之-串行解串器ADC使用

<sa8650>sa8650 qcxser-之-串行解串器GPIO输入输出 <sa8650>sa8650 qcxser-之-串行解串器GPIO的map <sa8650>sa8650 qcxser-之-串行解串器ERRB的map <sa8650>sa8650 qcxser-之-串行解串器ADC使用 <sa8650>sa8650 qcxser-之-串行解串器ADC使用 一 前言二 ADC配置三 验…

SpringBoot数据校验

后端在进行数据请求时&#xff0c;通常会校验前端传递过来的参数是否是空值或者是null。通常会通过if判断值是否满足条件&#xff0c;不满足就返回。但如果前端传递的是表单&#xff0c;那么要进行判断的条件就比较多了&#xff0c;太多的if会让代码变得臃肿&#xff0c;而且也…

DshanMCU-R128s2芯片手册与资料

CPU手册 Arm Cortex-M33 核心手册&#xff1a; Arm Cortex-M33 Processor Technical Reference ManualXuanTie C906 核心手册&#xff1a;T-Head XuanTie C906 Processor Datasheet DSP 相关 HIFI 5 DSP 相关&#xff1a;HiFi 5 DSPXtensa Xplorer 下载地址&#xff1a;Xplo…

【python】进阶--->网络编程(一)

一、网络编程 网络 : 为了联络多方然后进行通信,将数据从一方传递给另一方. 网络协议 : 不同计算机只需要通过联网,那么就可以相互进行传递数据,那么不同种类的计算机之间就和不同语言的人之间沟通一样,需要一种大家都认可都遵循的协议即可. 那么计算机都遵循的网络通信协议叫…

apache poi_5.2.5 实现对表格单元格的自定义变量名进行图片替换

apache poi_5.2.5 实现对表格单元格的自定义变量名进行图片替换 实现思路 1.首先定位到自定义变量名 2.然后先清除自定义变量名&#xff0c;可利用setText(null,0)来清除 3.在自定义变量名的位置添加图片&#xff0c;使用下面的代码 4.对于图片布局有要求的&#xff0c;利用C…

synchronized修饰方法和代码块底层实现有什么区别

首发2023-12-21 18:01yuan人生 synchronized修饰方法和代码块底层实现有什么区别-今日头条 (toutiao.com) 面试的时候经常有人问synchronized修饰方法和代码块底层实现有什么区别了&#xff0c;你来说下。实际做java开发很少有人关注这些东西&#xff0c;也基本没用。但面试…

Rocky Linux 9.3 安装 MinIO 最新版本 (超级详细版本)

安装步骤 MinIO官网文件目录 运行以下 curl 命令将 MinIO 的二进制文件下载到“ /usr/local/bin/minio ” curl -o /usr/local/bin/minio https://dl.min.io/server/minio/release/linux-amd64/minio 现在通过下面的 chmod 命令使 MinIO 二进制文件可执行 sudo chmod x /us…

Codeforces Round 916 (Div. 3)(A~E2)

A 统计一下每个字母的出现次数然后输出即可 #include <bits/stdc.h> #define rep(i,a,b) for(register int i (a); i < (b); i) #define fep(i,a,b) for(register int i (a); i > (b); --i) #define ls p<<1 #define rs p<<1|1 #define PII pair&l…

【深度学习】序列生成模型(四):评价方法

文章目录 一、困惑度&#xff08;Perplexity&#xff09;1. 定义2. 计算3. 衡量两个分布之间的差异4. 意义 二、BLEU&#xff08;Bilingual Evaluation Understudy&#xff09;1. 定义2. 意义3. 实例 三、ROUGE&#xff08;Recall-Oriented Understudy for Gisting Evaluation&…

linux 内核经典RCU

如果不关心使用的RCU是不可抢占RCU还是可抢占RCU&#xff0c;应该使用经典RCU的编程接口。最初的经典RCU是不可抢占RCU&#xff0c;后来实现了可抢占RCU&#xff0c;经典RCU的意思发生了变化&#xff1a;如果内核编译了可抢占RCU&#xff0c;那么经典RCU的编程接口被实现为可抢…

分布式全局ID之雪花算法

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 雪花算法 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是雪花算法&#xff1f…

Kafka--Kafka日志索引详解以及生产常见问题分析与总结

一、Kafka的Log日志梳理 ​ 这一部分数据主要包含当前Broker节点的消息数据(在Kafka中称为Log日志)。这是一部分无状态的数据&#xff0c;也就是说每个Kafka的Broker节点都是以相同的逻辑运行。这种无状态的服务设计让Kafka集群能够比较容易的进行水平扩展。比如你需要用一个新…

嵌入式开发工程师

嵌入式开发 岗位需求 上岗必备 文章目录 嵌入式开发前言一、负责新产品的电路图、PCB、嵌入式程序、软硬件调试等工作二、负责对现有产品进行硬件优化、调试、维护、排故等工作三、 负责各种单片机,传感器,元器件选型以及BOM表整理四、 负责硬件产品研发和量产过程中项目设计…