保姆级使用方法
上半部分是文档,看使用方法直接搜索“快速使用”。
简介
EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WERTC、FMP4视频直播与视频点播等多种协议, 支持H.264、H.265、AAC等多种音视频编码格式,支持mse、wasm、wcs等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简单, 功能强大。
功能说明
- 支持 MSE H264和H265硬解码;
- 支持 WebCodec H264和H265硬解码;
- 支持 WASM H264和H265硬解码/软解码;
- 支持 m3u8/HLS (H265/H265)播放;
- 支持 Mpeg4格式(H264)播放;
- 支持 HTTP-FLV/WS-FLV (H265/H265)播放;
- 支持 HTTP-FMP4/WS-FMP4 (H265/H265)播放;
- <支持 WEBRTC(easy支持H264/H265、其他流媒体支持H264)播放;
- 支持 裸流(H264/H265) 播放;
- 支持 直播和点播播放;
- 支持 点播多清晰度播放;
- 支持 全屏或比例显示;
- 支持 电子放大;
- 支持 水印(动态水印、幽灵水印);
- 支持 显示上一个视频最后一帧;
- 支持 播放器快照截图;
- 支持 视频录制(WebM格式(音频+视频)、Mp4格式(视频),Flv格式(音频+视频));
- 支持 超时、断网重连、异常暂停播放等;
配置属性
参数 | 类型 | 说明 | 默认值 |
container | 播放器容器 | - | - |
decoder | wasm解码地址 | String | - |
isResize | 是否拉伸 | Boolean | true |
loadingText | 加载显示的文字 | String | 加载中 |
videoBuffer | 加载显设置最小缓冲时长,单位秒,播放器会自动消除延迟。示的文字 | Number | 1 |
hasAudio | 是否解析音频 | Boolean | true |
useMSE | MSE模式 | Boolean | fasle |
useWCS | WCS模式 | Boolean | fasle |
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 | 播放事件 |
pause | 暂时事件 |
videoInfo | 视频信息 |
audioInfo | 音频信息 |
mute | 音频 |
error | 播放异常 |
kBps | 当前网速, 单位KB 每秒1次, |
recordEnd | 录制结束的事件 |
fullscreen | 录制开始的事件 |
recordStart | 当前是否全屏 |
streamQualityChange | 清晰度回调 |
playbackSeek | 录像时间轴跳转回调 |
playbackPreRateChange | 录像倍数的回调 |
currentPts | 监听当前渲染帧的时间戳(流里面的) |
案例
EasyPlayrPro.on('play', function () {
console.log('play');
})
错误 Type 类型说明
playError = 'playError'/** 播放错误,url 为空的时候,调用 play 方法 */
fetchError = 'fetchError'/** http 请求失败 */
websocketError = 'websocketError'/** websocket 请求失败 */
wasmDecodeError = 'wasmDecodeError'/** wasm 解码失败 */
hlsError = 'hlsError'/** hls 解码失败 */
webrtcError = 'webrtcError'/** webrtc 解码失败 */
webrtcClosed = 'webrtcClosed',/** webrtc 关闭 */
flvDemuxBufferSizeTooLarge = 'flvDemuxBufferSizeTooLarge'/** 缓冲区过大*/
audioChannelError = 'audioChannelError'/** 音频错误*/
EasyPlayrPro.on('error', function (type, msg) {
console.log('error:', type, msg);
})
// 说明: type为错误类型,msg为错误详情。
方法
方法名 | 说明 | 参数 |
play | 播放 | 'url' |
playback | 播放录像 | |
pause | 暂停播放 | |
isPause | 返回是否暂停中状态 | |
setBufferTime | 设置最大缓冲时长 | 1 |
setVolume | 设置音量 | |
getVolume | 获取音量 | |
exitFullscreen | 退出全屏 | |
mute | 静音 | |
cancelMute | 取消静音 | |
isMute | 返回是否静音 | |
screenshot | 获取快照 | |
setFullscreen | 全屏(取消全屏)播放视频 | |
setStreamQuality | 设置分辨率必须是qualityConfig里面的数据 | |
forward | 设置录像倍数 | |
setPlaybackStartTime | 设置录像跳转时间/s | |
getVideoInfo | 获取视频信息 | |
getAudioInfo | 获取音频信息 | |
destroy | 关闭视频,释放底层资源 |
screenshot 截图,调用后弹出下载框保存截图
filename: 可选参数, 保存的文件名, 默认 时间戳
format : 可选参数, 截图的格式,可选png或jpeg或者webp ,默认 png
quality: 可选参数, 当格式是jpeg或者webp时,压缩质量,取值0 ~ 1 ,默认 0.92
type: 可选参数, 可选download或者base64或者blob,默认download
案例:
const base64 = EasyPlayerPro.screenshot("test", "png", 0.5, 'base64')
快速使用
- 第一步:把文件放到项目根目录,在入口文件script引入
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>飞控管理平台</title>
<script src="/js/easyplayer-pro.js"></script>
<script src="/2.6.14_vue.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
- 第二步:定义一个div盒子
<div class="player_box" id="player_box1"></div>
- 第三步:
new EasyPlayerPro
、播放视频
<script setup>
import { onMounted, ref } from 'vue'
// const videoUrl = ref('http://192.168.124.226:10080/flv/live/1.flv')
const videoUrl = ref('http://192.168.124.226:10080/hls/1/playlist.m3u8')
// const videoUrl = ref('webrtc://192.168.124.226:10080/rtc/1')
function onPlayer () {
playerInfo.value && playerInfo.value.play(videoUrl.value).then(() => {
}).catch((e) => {
console.error(e)
})
}
function playCreate () {
const container = document.getElementById('player_box1')
/* eslint-disable */ 此处是避开eslint语法检查,一直检查不过,所以这么写
const easyplayer = new EasyPlayerPro({
container: container,
decoder: '/js/decoder-pro.js',
videoBuffer: 0.2, // 缓存时长
isResize: false,
text: '',
loadingText: '加载中',
// debug: true,
// debugLevel: 'debug',
useMSE: true,
useWCS: true,
isMulti: true,
useSIMD: config.value.useSIMD,
hasAudio: config.value.hasAudio,
showBandwidth: config.value.showBandwidth, // 显示网速
showPerformance: config.value.showBandwidth,
operateBtns: {
fullscreen: true,
screenshot: true,
play: true,
audio: true,
record: true,
quality: true,
performance: true,
},
watermarkConfig: {
text: {
content: 'easyplayer-pro'
},
right: 10,
top: 10
},
playbackForwardMaxRateDecodeIFrame: 1,
isWebrtcForOthers: true,
demuxUseWorker: true,
supportHls265: true,
})
/* eslint-enable */
easyplayer.on('fullscreen', function (flag) {
// console.log('is fullscreen', id, flag)
})
easyplayer.on('playbackPreRateChange', (rate) => {
easyplayer.forward(rate)
})
easyplayer.on('playbackSeek', (data) => {
easyplayer.setPlaybackStartTime(data.ts)
})
playerInfo.value = easyplayer
onPlayer() // 播放视频
}
onMounted(() => {
playCreate()
})
</script>
案例演示
演示地址: https://www.easydarwin.org/easyplayer.js/index.html
demo链接
https://github.com/EasyDarwin/EasyPlayer.js
https://www.tsingsee.com/download/EasyPlayer.html
备注:(开发中遇到的问题)
1、直接请求myeye返回的播放地址不可以直接播放(http://myeye.xxx.com:9050/camera?device=3301061001605&channel=0&streamtype=1&token=1L1U1E1447z7eZea3b&type=std.flv)
2、在EasyDarwin里面生成的播放地址可以直接播放(从巨峰服务器拉流到EasyDarwin、EasyDarwin再转了一下)