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,一经查实,立即删除!

相关文章

5G 模组 初始化状态检测

5G 模组 上电检测 5G 模组 上电检测 #终端上电后&#xff0c;待模组正常启动&#xff0c;再进入 控制台。 #vim /etc/profile##新增 until [ -c /dev/ttyUSB1 ] doecho -e "Wait module[5G] up ... "sleep 5 done ##新增The End.

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;或者说是正在运行中的程…

深入QML语法

文章目录 深入了解 QML 文档的结构和语法什么是 QML 文档&#xff1f;导入语句导入语句的格式示例 对象声明基本语法示例更复杂的对象声明 QML 对象类型详解1. Rectangle&#xff08;矩形&#xff09;2. Gradient&#xff08;渐变&#xff09;3. Text&#xff08;文本&#xff…

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

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

Linux应用软件编程-文件操作(标准io)

在Linux下一切皆文件&#xff0c;比如&#xff1a;.txt&#xff0c;.c&#xff0c;.h&#xff0c;.jpg&#xff0c;目录&#xff0c;键盘&#xff0c;鼠标&#xff0c;显示器、硬盘等等都是文件&#xff0c;即IO。文件操作的统一思想&#xff1a;打开文件&#xff0c;读、写文件…

【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;步骤如下 进入…

sql server msdb数据库备份恢复

备份 BACKUP DATABASE [msdb] TO DISK ND:\liyuanshuai\test\sqlserver_bakfile\msdb20241219.bak WITH NOFORMAT, NOINIT, NAME Nlys-完整 数据库 备份, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS 10 GO然后删除2个测试的job&#xff0c;停止 SQL Server 代理…

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…

bain.js(十二):RNN神经网络实战教程 - 音乐乐谱生成 -人人都是作曲家~

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍&#xff08;二&#xff09;&#xff1a;项目集成方式详解&#xff08;三&#xff09;&#xff1a;手把手教你配置和训练神经网络&#xff08;四&#xff09…

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 下的路径如何处理&…

前端-处理数据的函数

判断数据是否为空,对象是否存在某属性,属性值是否为空,对大数据进行换算,对单位进行转换. 目录 1.格式化数据 2.判断值是否为空(包括对象、数组、字符串、数值类型) &#xff08;1&#xff09;值是0不表示空 &#xff08;2&#xff09;值是0表示空 3. 检查对象是否具有指定名…

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

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

Android运行低版本项目可能遇到的问题

Android运行低版本项目可能遇到的问题 低版本项目总是遇到各种问题的&#xff0c;耐心点 一、gradle-xxx.xxx.xxx.zip一直下载不下来 在gradle-wrapper.properties可以试下 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER_HOME …

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

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