251 lines
5.1 KiB
Markdown
251 lines
5.1 KiB
Markdown
# 萤石云对接快速参考
|
||
|
||
> **快速参考文档** - 5分钟了解核心要点
|
||
|
||
---
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 1. 文件清单
|
||
```
|
||
✅ src/pages/visual/index.vue # 监控页面
|
||
✅ src/components/EzvizVideoPlayerSimple.vue # 播放器组件
|
||
✅ src/static/html/ezviz-iframe.html # iframe HTML
|
||
✅ src/utils/ezvizTokenManager.js # Token管理
|
||
```
|
||
|
||
### 2. 配置清单
|
||
```json
|
||
// pages.json - 横屏配置
|
||
{
|
||
"path": "pages/visual/index",
|
||
"style": {
|
||
"pageOrientation": "landscape" // 横屏
|
||
}
|
||
}
|
||
|
||
// manifest.json - 内存配置
|
||
{
|
||
"app-plus": {
|
||
"compatible": {
|
||
"largeHeap": true // 512MB
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. 核心代码(3步完成)
|
||
|
||
```javascript
|
||
// 步骤1: 获取 AccessToken
|
||
const accessToken = await tokenManager.getValidAccessToken()
|
||
|
||
// 步骤2: 准备配置
|
||
const config = {
|
||
accessToken: accessToken,
|
||
play_url: "ezopen://open.ys7.com/K74237657/1.hd.live"
|
||
}
|
||
|
||
// 步骤3: 初始化播放器
|
||
this.ezstate = true
|
||
await this.$nextTick()
|
||
this.$refs.playerVideoRef.initEzuikit(config)
|
||
```
|
||
|
||
---
|
||
|
||
## 📐 技术架构
|
||
|
||
```
|
||
Vue页面 → web-view → 本地HTML → 萤石云iframe
|
||
↓ ↓ ↓ ↓
|
||
管理状态 URL传参 解析参数 官方播放器
|
||
```
|
||
|
||
---
|
||
|
||
## 🔑 关键参数
|
||
|
||
### ezopen地址格式
|
||
```
|
||
ezopen://open.ys7.com/{设备序列号}/{通道号}.{清晰度}.live
|
||
|
||
示例:
|
||
ezopen://open.ys7.com/K74237657/1.hd.live
|
||
↑ ↑ ↑
|
||
设备序列号 通道 清晰度(hd/sd)
|
||
```
|
||
|
||
### AccessToken获取
|
||
```javascript
|
||
// API: https://open.ys7.com/api/lapp/token/get
|
||
// 自动管理(推荐)
|
||
const token = await tokenManager.getValidAccessToken()
|
||
|
||
// 有效期:2小时
|
||
// 自动缓存:提前1小时刷新
|
||
```
|
||
|
||
---
|
||
|
||
## 🐛 常见问题速查
|
||
|
||
| 问题 | 原因 | 解决方案 |
|
||
|------|------|----------|
|
||
| 黑屏 | AccessToken过期 | `tokenManager.getValidAccessToken()` |
|
||
| 崩溃 | 内存不足 | 使用iframe方案 + largeHeap:true |
|
||
| 变形 | 容器比例错误 | padding-top: 56.25% (16:9) |
|
||
| ref undefined | 组件未渲染 | 先设置ezstate=true,再await $nextTick() |
|
||
| 加载慢 | 高清占用大 | 切换标清: .sd.live |
|
||
|
||
---
|
||
|
||
## 💡 核心解决方案
|
||
|
||
### 问题1:OutOfMemoryError
|
||
```javascript
|
||
// ❌ 不要加载本地SDK(~20MB)
|
||
<script src="/static/js/ezuikit.js"></script>
|
||
|
||
// ✅ 使用官方iframe(内存占用↓90%)
|
||
<iframe src="https://open.ys7.com/ezopen/h5/iframe?..."></iframe>
|
||
```
|
||
|
||
### 问题2:画面变形
|
||
```scss
|
||
// ✅ 使用padding-top锁定16:9
|
||
.video-content {
|
||
&::before {
|
||
content: '';
|
||
display: block;
|
||
padding-top: 56.25%; /* 16:9 */
|
||
}
|
||
}
|
||
```
|
||
|
||
### 问题3:组件引用错误
|
||
```javascript
|
||
// ✅ 正确顺序
|
||
this.ezstate = true // 1. 先渲染
|
||
await this.$nextTick() // 2. 等待DOM
|
||
this.$refs.player.init() // 3. 再调用
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 性能对比
|
||
|
||
| 方案 | 内存占用 | 稳定性 | 加载速度 |
|
||
|------|---------|--------|----------|
|
||
| 本地SDK | 256MB+ | ❌ 崩溃 | 慢 |
|
||
| **iframe(最终)** | **~80MB** | **✅ 稳定** | **快** |
|
||
|
||
---
|
||
|
||
## 🎯 一键复制代码
|
||
|
||
### 播放器初始化(完整版)
|
||
```javascript
|
||
async getVideoData() {
|
||
try {
|
||
// 1. 获取token
|
||
let accessToken
|
||
try {
|
||
accessToken = await tokenManager.getValidAccessToken()
|
||
} catch (error) {
|
||
accessToken = "backup-token" // 备用
|
||
}
|
||
|
||
// 2. 配置参数
|
||
const config = {
|
||
accessToken: accessToken,
|
||
play_url: "ezopen://open.ys7.com/K74237657/1.hd.live"
|
||
}
|
||
|
||
// 3. 渲染组件
|
||
this.ezstate = true
|
||
await this.$nextTick()
|
||
|
||
// 4. 初始化播放器
|
||
if (this.$refs.playerVideoRef) {
|
||
this.$refs.playerVideoRef.initEzuikit(config)
|
||
}
|
||
|
||
} catch (error) {
|
||
console.error('播放器初始化失败:', error)
|
||
}
|
||
}
|
||
```
|
||
|
||
### 刷新播放器
|
||
```javascript
|
||
refresh() {
|
||
this.$refs.playerVideoRef.refresh()
|
||
}
|
||
```
|
||
|
||
### 切换清晰度
|
||
```javascript
|
||
// 高清
|
||
play_url: "ezopen://open.ys7.com/K74237657/1.hd.live"
|
||
|
||
// 标清(省流量)
|
||
play_url: "ezopen://open.ys7.com/K74237657/1.sd.live"
|
||
```
|
||
|
||
---
|
||
|
||
## 📱 调试技巧
|
||
|
||
### 查看日志
|
||
```bash
|
||
# BlueStacks + ADB
|
||
adb logcat | grep -i "console\|chromium"
|
||
```
|
||
|
||
### Chrome远程调试
|
||
```
|
||
chrome://inspect/#devices
|
||
```
|
||
|
||
### 关键日志点
|
||
```javascript
|
||
console.log('AccessToken:', token.substring(0, 20))
|
||
console.log('PlayUrl:', play_url)
|
||
console.log('组件ref:', this.$refs.playerVideoRef)
|
||
```
|
||
|
||
---
|
||
|
||
## 🔗 相关链接
|
||
|
||
- 📖 [完整指南](./萤石云APP对接完整指南.md)
|
||
- 🌐 [萤石云开放平台](https://open.ys7.com/)
|
||
- 📚 [Uni-app文档](https://uniapp.dcloud.net.cn/)
|
||
|
||
---
|
||
|
||
## ✅ 检查清单
|
||
|
||
部署前确认:
|
||
|
||
```
|
||
□ 已配置 AppKey 和 AppSecret
|
||
□ 已获取设备序列号和验证码
|
||
□ pages.json 配置横屏 (pageOrientation: landscape)
|
||
□ manifest.json 启用大内存 (largeHeap: true)
|
||
□ 所有必需文件已添加
|
||
□ tokenManager 正常工作
|
||
□ 测试播放功能正常
|
||
```
|
||
|
||
---
|
||
|
||
**最后更新:** 2025-10-06
|
||
**快速参考版本:** v1.0
|
||
|
||
---
|
||
|
||
需要详细说明?查看 → [萤石云APP对接完整指南.md](./萤石云APP对接完整指南.md)
|
||
|