easyplayer-pro播放器学习

背调

查询官方文档,EasyPlayer-pro支持ws-flv, http-flv, hls, webrtc(webrtc://xxx)格式,电子放大、水印(动态水印、幽灵水印)、显示上一个视频最后一帧、播放器快照截图、视频录制(WebM格式(音频+视频)、MP4格式(视频),FLV格式(音频+视频))、超时、断网重连、异常暂停播放等

属性配置 

属性说明类型默认值
container

播放器容器

--

decoder

wasm解码地址

String

-

isResize

是否拉伸

Boolean

true

loadingText

加载显示的文字

String

加载中

videoBuffer

设置最小缓冲时长,单位秒,播放器会自动消除延迟

Number

1

hasAudio

是否解析音频

Boolean

true

useMSE

MSE模式

Boolean

false

useWCS

WCS模式

Boolean

false

useSIMD

强制使用wasm模式

Boolean

false

background

视频封面图片

String

-

qualityConfig

配置清晰度

Array

['普清', '高清', '超清', '4K', '8K']

defaultStreamQuality

默认显示的清晰度,如果不设置,会显示第一个清晰度

String

-

isNotMute

是否渲染音频

Boolean

false

recordType

视频录制默认mp4格式

String

mp4, flv

playbackForwardMaxRateDecodeIFrame

录像倍数

Number

-

debug

控制台日志打印

Boolean

false

debugLevel

打印日志级别默认warn

String

debug, warn

调用方法和事件回调

方法/事件说明
play播放

playback

播放录像

pause

暂停播放

isPause

返回是否暂停中状态

setBufferTime

设置最大缓冲时长

setVolume

设置音量

getVolume

获取音量

exitFullscreen

退出全屏(取消全屏)播放视频

mute

静音

cancelMute

取消静音

isMute

返回是否静音

screenshot

获取快照

setFullscreen

全屏

setStreamQuality

设置分辨率,必须是qualityConfig里面的数据

forward

设置录像倍数

setPlaybackStartTime

设置录像跳转时间/s

getVideoInfo

获取视频信息

getAudioInfo

获取音频信息

destroy

关闭视频,释放底层资源

play

播放事件

pause

暂停事件

videoInfo

视频信息

audioInfo

音频信息

mute

音频事件

error

播放异常

kBps

当前网速,单位KB 每秒1次

recordEnd

录制结束的事件

recordStart

录制开始的事件

fullscreen

当前是否全屏

streamQualityChange

清晰度回调

playbackSeek

录像时间轴跳转回调

playbackPreRateChange

录像倍数的回调

currentPts

监听当前渲染帧的时间戳(流里面的)

应用

npm install easyplayerpro
import { createApp } from 'vue';
import App from './App.vue';
import EasyPlayerPro from 'easyplayerpro';const app = createApp(App);// 将 EasyPlayerPro 挂载到全局属性
app.config.globalProperties.$EasyPlayerPro = EasyPlayerPro;app.mount('#app');
<template><div class="container"><div class="row"><div class="col-md-8"><!-- 播放器容器 --><div ref="videoContainer" id="video" class="player-container"></div></div><div class="col-md-4"><!-- 配置选项 --><div class="config-options"><label><input type="checkbox" v-model="config.useMSE" /> MSE 硬解</label><label><input type="checkbox" v-model="config.useSIMD" /> WASM 解码</label><label><input type="checkbox" v-model="config.hasAudio" /> 渲染音频</label><label><input type="checkbox" v-model="config.websocket1006ErrorReplay" /> 自动重连</label><label>延迟重播时间:<input type="number" v-model.number="config.reconnectTime" /> ms</label><label>水印配置:<input type="text" v-model="config.watermark.text" /></label><label>视频封面 URL:<input type="text" v-model="config.poster" /></label><label>播放地址:<input type="text" v-model="config.url" id="playHref" /></label></div><!-- 控制按钮 --><div class="control-buttons"><button id="play" @click="createPlayer">播放</button><button id="rePlay" @click="rePlay">重播</button><button id="destroy" @click="destroyPlayer">销毁</button><button @click="screenshotFn">截图</button></div></div></div></div>
</template><script setup>
import { reactive, onMounted, ref } from 'vue';// 获取全局属性
const { proxy } = getCurrentInstance();// 初始化播放器配置
const config = reactive({useMSE: false,useSIMD: false,hasAudio: false,websocket1006ErrorReplay: false,reconnectTime: 5000, // 5秒重连watermark: {text: ''},poster: '',url: 'http://192.168.1.37:8888/live/001.live.flv'
});// 声明
let easypro;
const videoContainer = ref(null);
const playHref = ref(null);// 实例初始化
function createPlayer () {if (easypro) {easypro.destroy(); // 销毁存在的实例console.log('Existing player destroyed');}easypro = new proxy.$EasyPlayerPro({container: videoContainer.value,videoBuffer: 0.2,videoBufferDelay: config.videoBufferDelay || 0, // 使用 config 中的值useMSE: config.useMSE,useSIMD: config.useSIMD,hasAudio: config.hasAudio,websocket1006ErrorReplay: config.websocket1006ErrorReplay,reconnectTime: config.reconnectTime,networkDelayTimeoutReplay: false,heartTimeout: 10000,replayUseLastFrameShow: false,background: config.background || '',timeout: 10,qualityConfig: ['普清', '高清', '超清', '4K', '8K'],debug: true,debugLevel: "debug",operateBtns: {fullscreen: true,screenshot: true,play: true,},});const url = config.url;if (url) {easypro.play(url);console.log(`Playing video from: ${url}`);} else {console.warn('No video URL provided!');}
}// 重播
function rePlay () {if (easypro) {easypro.play(config.url);console.log('Replaying the video');} else {createPlayer();}
}// 销毁
function destroyPlayer () {if (easypro) {easypro.destroy();console.log('Player destroyed');}
}// 截图
function screenshotFn () {if (easypro) {easypro.screenshot();console.log('Screenshot taken');} else {console.warn('No player instance found to take a screenshot');}
}onMounted(() => {playHref.value = document.getElementById('playHref');
});
</script><style scoped>
.player-container {width: 100%;height: 500px;background-color: #000;
}.config-options label {display: block;margin-bottom: 8px;
}.control-buttons button {margin-right: 10px;
}
</style>

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

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

相关文章

WPF+MVVM案例实战与特效(四十三)- 打造动态炫酷彩虹字控件,让你的界面动起来

文章目录 1、引言1、案例效果2、案例实现1、XAML 布局2、逻辑代码3、动画效果4、控件使用5、运行效果3、案例源代码4、总结1、引言 上一节,我们实现了炫酷的彩虹字控件,现在我们想让彩虹字更加生动吸引人,让每个字体跳动起来,让字体活过来。这里我们通过动画实现,我们把这…

线程知识总结(一)

1、概述 1.1 进程与线程 进程是程序运行时&#xff0c;操作系统进行资源分配的最小单位&#xff0c;包括 CPU、内存空间、磁盘 IO 等。从另一个角度讲&#xff0c;进程是程序在设备&#xff08;计算机、手机等&#xff09;上的一次执行活动&#xff0c;或者说是正在运行中的程…

【Python】使用Selenium 操作浏览器 自动化测试 记录

【自动化】Python SeleniumUtil 工具 开启开发者模式 自动安装油猴用户脚本等-CSDN博客文章浏览阅读389次。【自动化】Python SeleniumUtil 工具。https://blog.csdn.net/G971005287W/article/details/144565691?spm1001.2014.3001.5501【学习记录】浏览器指纹相关学习记录&am…

【Rust自学】4.4. 引用与借用

4.4.0 写在正文之前 这一节的内容其实就相当于C的智能指针移动语义在编译器层面做了一些约束。Rust中引用的写法通过编译器的约束写成了C中最理想、最规范的指针写法。所以学过C的人对这一章肯定会非常熟悉。 喜欢的话别忘了点赞、收藏加关注哦&#xff08;加关注即可阅读全文…

深入解析 StarRocks 物化视图:全方位的查询改写机制

小编导读&#xff1a; 本文将重点介绍如何利用物化视图进行查询改写。文章将全面介绍物化视图的基本原理、关键特性、应用案例、使用场景、代码细节以及主流大数据产品的物化视图改写能力对比。 物化视图在 StarRocks 中扮演着至关重要的角色&#xff0c;它是进行数据建模和加速…

2. petalinux-build失败

NOTE 解决因为网络原因产生的编译错误分享详细的解决步骤 报错的情况 因为网络原因产生编译错误 现象 找不到适合的包文件(No suitable stageing package found) 不能发现文件(Fetcher failure for URL) 解决方法 采用本地加载本地文件的方式&#xff0c;步骤如下 进入…

web实验二

web实验二 2024.12.19 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>青岛理工大学</title>&l…

WebSocket入门与结合redis

WebSocket是什么 WebSocket 是一种用于在客户端和服务器之间建立双向通信的协议&#xff0c;它能实现实时、持久的连接。与传统的 HTTP 请求响应模式不同&#xff0c;WebSocket 在建立连接后允许客户端和服务器之间相互发送消息&#xff0c;直到连接关闭。由于 WebSocket 具有…

Hive是什么,Hive介绍

官方网站&#xff1a;Apache Hive Hive是一个基于Hadoop的数据仓库工具&#xff0c;主要用于处理和查询存储在HDSF上的大规模数据‌。Hive通过将结构化的数据文件映射为数据库表&#xff0c;并提供类SQL的查询功能&#xff0c;使得用户可以使用SQL语句来执行复杂的​MapReduce任…

OpenHarmony和OpenVela的技术创新以及两者对比

两款有名的国内开源操作系统&#xff0c;OpenHarmony&#xff0c;OpenVela都非常的优秀。本文对二者的创新进行一个简要的介绍和对比。 一、OpenHarmony OpenHarmony具有诸多有特点的技术突破和重要贡献&#xff0c;以下是一些主要方面&#xff1a; 架构设计创新 分层架构…

Electron-Vue 开发下 dev/prod/webpack server各种路径设置汇总

背景 在实际开发中&#xff0c;我发现团队对于这几个路径的设置上是纯靠猜的&#xff0c;通过一点点地尝试来找到可行的路径&#xff0c;这是不应该的&#xff0c;我们应该很清晰地了解这几个概念&#xff0c;以下通过截图和代码进行细节讲解。 npm run dev 下的路径如何处理&…

基础入门-Web应用蜜罐系统堡垒机运维API内外接口第三方拓展架构部署影响

知识点&#xff1a; 1、基础入门-Web应用-蜜罐系统 2、基础入门-Web应用-堡垒机运维 3、基础入门-Web应用-内外API接口 4、基础入门-Web应用-第三方拓展架构 一、演示案例-Web-拓展应用-蜜罐-钓鱼诱使 蜜罐&#xff1a;https://hfish.net/ 测试系统&#xff1a;Ubuntu 20.04 …

springboot中Controller内文件上传到本地以及阿里云

上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年龄&#xf…

智慧城市工程:相关学点、优势、未来发展

目录 相关学点&#xff1a; 智慧城市的优势 挑战与未来发展 智慧城市工程是利用现代信息技术和数据分析手段&#xff0c;提升城市管理和服务水平&#xff0c;实现城市运行的智能化、便捷化和高效化的一种新型城市发展模式。智慧城市通过整合物联网&#xff08;IoT&#xff0…

看板工具助力餐饮与酒店行业实现数字化转型,提升管理与运营效率

在餐饮与酒店行业&#xff0c;服务质量和客户体验是衡量企业成功的关键因素。随着客户需求的不断多样化以及市场竞争的加剧&#xff0c;传统的管理模式逐渐难以满足高效运营的需求。尤其在高峰期&#xff0c;如何优化内部流程、提高服务效率和响应速度&#xff0c;成为了许多餐…

2024年CCF 非专业级软件能力认证CSP-J/S 第二轮( 提高组) 染色(color)

完整题目内容可前往下方链接&#xff1a; 染色&#xff08;color&#xff09;_C_嗨信奥-玩嗨信息奥林匹克竞赛-少儿编程题库学习中心https://www.hixinao.com/tiku/cpp/show-4118.html 若需更多真题&#xff0c;可前往题库中心查找&#xff0c;题库中心涵盖白名单赛事真题&am…

OpenIPC开源FPV之Adaptive-Link天空端代码解析

OpenIPC开源FPV之Adaptive-Link天空端代码解析 1. 源由2. 框架代码2.1 消息机制2.2 超时机制 3. 报文处理3.1 special报文3.2 普通报文 4. 工作流程4.1 Profile 竞选4.2 Profile 研判4.2.1 回退策略4.2.2 保持策略 4.3 Profile 应用 5. 总结6. 参考资料7. 补充资料7.1 RSSI 和 …

labelme标签批量转换数据集json_to_dataset

文章目录 labelme标签批量转换数据集json_to_dataset转换原理单张图片转换多张图片批量转换bat脚本循环法 标注图片提取标注图片转单通道 labelme标签批量转换数据集json_to_dataset 转自labelme批量制作数据集教程。 转换原理 在安装了labelme的虚拟环境中有一个labelme_js…

Apache Kylin最简单的解析、了解

官网&#xff1a;Overview | Apache Kylin 一、Apache Kylin是什么&#xff1f; 由中国团队研发具有浓厚的中国韵味&#xff0c;使用神兽麒麟&#xff08;kylin&#xff09;为名 的一个OLAP多维数据分析引擎:&#xff08;据官方给出的数据&#xff09; 亚秒级响应&#xff…

01云计算HCIA学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第一章 云计算概述 ICT&#xff1a;ICT是世界电信协会在2001年的全球会议中提出的一个综…