开始前适用开发板:ESP32-S3 Korvo · 开发框架:ESP-IDF
适用开发板:Korvo S3 · 工程
04.advanced.avi_multi_player· targetesp32s3
前置:AVI Player · SD 卡读写
学习时长:约 25 分钟 · 难度:★★★★☆
学习目标
完成本节后,你将能够:
- 理解同时解码多路 AVI 视频的任务调度方式
- 掌握 LVGL 画布分屏显示多个视频窗口的方法
- 了解嵌入式多视频流的性能瓶颈与优化策略
1. 这个例子在干嘛
从 TF 卡同时读取 多个 AVI 文件,各自独立解码 MJPEG 帧,在 LVGL 画面上 分窗显示。相当于"四分屏监控画面"。
生活类比:安防监控室的多画面分屏——同时显示多路摄像头。
TF 卡
├── video1.avi → 解码任务 1 → ┌──────┬──────┐
├── video2.avi → 解码任务 2 → │ 画面1 │ 画面2 │
├── video3.avi → 解码任务 3 → ├──────┼──────┤
└── video4.avi → 解码任务 4 → │ 画面3 │ 画面4 │
└──────┴──────┘
LVGL 分屏布局
2. 编译烧录
cd Korvo_Firmware\04.advanced.avi_multi_player
idf.py set-target esp32s3
idf.py build flash monitor
TF 卡需放入多个 AVI 文件。
3. 性能限制
| 限制因素 | Korvo (SPI LCD) | P4C5 (MIPI LCD) |
|---|---|---|
| 屏幕分辨率 | 240×280 | 480×800 |
| 每路窗口 | ~120×140 | ~240×400 |
| 可行路数 | 2~4 路 | 4 路 |
| 解码方式 | 软件 JPEG | 硬件 JPEG |
| 帧率 | 低(分时 CPU) | 更高 |
4. 常见问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 只显示一路 | AVI 文件不够 | TF 卡放多个 AVI |
| 帧率极低 | CPU 软解 4 路压力大 | 减少路数或降低分辨率 |
| 内存不足 | 多路缓冲占用 PSRAM | 减少路数/帧缓冲数 |
| 画面撕裂 | LVGL 刷新冲突 | 使用双缓冲 |
5. 动手改造建议
- 监控回放:
avi_recorder录制 →avi_multi_player回放 - 实时 + 回放:一路显示摄像头实时画面 + 三路回放录像
- 画面切换:触摸某路 → 全屏放大
- P4C5 升级:利用硬件 JPEG 解码大幅提高帧率
6. 下一步
| 方向 | 推荐例程 | 说明 |
|---|---|---|
| AVI 录制 | AVI Recorder | 录制视频 |
| 单路播放 | AVI Player | 单路详解 |
| P4C5 版 | P4C5 AVI Multi | 硬件加速版 |
酷世DIY · Kevincoooool