AC707N_本地视频播放demo(AVI-MJPEG-PCM)
📎 原始文档:https://www.kdocs.cn/l/clq5yyJovYzM AC707N_本地视频播放demo(AVI-MJPEG-PCM)
1. 最新版本信息(视频仅支持AVI-MJPEG-PCM编码)
2026.4.25 707v300patch320 视频表盘演示
首先使用工具转换一个avi资源出来VideoTrans_20251106.1.zip
使能视频表盘功能并将avi资源打包到watch.bin(注意,请将.avi后缀去掉,流程中不判断后缀!)
如果空间不够可以扩大watch.bin的分区
代码方面请注意以下内容
AVI表盘的加载流程和手表背景图BGP的加载流程基本一致。需要注意设置一下路径,手表公板sdk默认不会直接加载BGP到表盘上,只有通过APP传输壁纸之后才会设置启用路径。
开发板效果如图所示
2025.9.19(开psram版本的b.c里面的zalloc接口没转移到psram问题)
把截图的代码放在最开头
#if TCFG_PSRAM_DEV_ENABLE
void * zalloc_psram(size_t size){
void * p = malloc_psram(size);
memset(p, 0, size);
return p;
}
#define malloc malloc_psram
#define zalloc zalloc_psram
#define free free_psram
#endif
2025.9.18(部分ffmpeg转换后的AVI不能播放问题)
ffmpeg指令添加-pix_fmt yuv420p 限制
ffmpeg -i test.gif -vf "scale=296:240:force_original_aspect_ratio=decrease,pad=296:240:(ow-iw)/2:(oh-ih)/2,fps=40" -c:v mjpeg -q:v 8 -pix_fmt yuv420p -c:a pcm_s16le -ar 16000 -ac 1 -f avi Atest.avi
2025.9.9(花屏闪屏问题补丁)
修复avi低概率花屏补丁-基于2025.9.5avi demo版本.zip基于2.0.0 patch02的SDK
更新:
1.修复播放过程中部分帧偶现花屏现象
2025.9.5
代码demo(基于2.0.0 patch02以上):avi demo关键修改2025.9.5.zip
公版测试SDK(7074AS+nand版本):sdk_avi_demo测试示例请勿直接用于开发2025.9.5.zip
更新:
1.修复音频卡顿问题
2.修复画面撕裂问题
3.优化帧率466x466@30FPS
4.修复切换视频闪烁
5.启动接口更新如下
// nanad + psram方案
// sram约占15K psram约占3*mjpeg峰值buf大小
player = animig_open("storage/fat_nand/C/Atest.avi", 0, 3); // 缓存3帧可以达到30FPS
// 不带psram sd卡方案
// sram约占 15K+2*mjpeg峰值buf大小,如峰值是30K,那么至少需要15+2*30=75K
player = animig_open("storage/sd0/C/Atest.avi", 0, 2); // 最低缓存2帧,20帧左右
// norflash 方案,仅缓存小量句柄
// sram约占15K
player = animig_open("storage/virfat_flash/C/Atest.avi", 0, 3); // 缓存3帧可以达30FPS
其中gpu_task.c关键移植代码
~~2025.4.27(旧)~~
~~代码demo:avi_test_relase_250427.rar(内置flash与SD通用)~~
~~公版测试SDK:avi_test_sdk_250523.zip(内置flash版本,非最新标准sdk请勿直接开发)~~
注意:使用上面的测试版本的SDK,在公版开发板上播放时,需要更改为对应的屏驱,如lcd_77916。
~~请新增替换以下两个相关核心文件:~~添加AVI TE屏蔽
切换AVI布局的页面
} else if (key_event == KEY_UI_SHORTCUT) {
printf("KEY_UI_SHORTCUT");
#if 1//AVI_TEST //
UI_HIDE_CURR_WINDOW();
UI_SHOW_WINDOW(PAGE_74);
#else
ui_show_shortcut_key();
#endif
所需内存 = SD卡模块内存+avi播放器内存+JPEG渲染内存+PCM音频播放内存+JPEG缓冲内存。
一般要耗50K左右RAM,其中JPEG缓冲内存的大小可以根据指定视频质量来调节,JPEG缓冲内存一般在十几K~几十K,以实际视频为准。
~~对于内置的Flash视频或存储于SD卡中的低比特率视频,可能无需启用缓存机制即可顺利播放。建议进行实际测试以验证播放流畅性,若测试结果表明无需缓存即可实现顺畅播放,则可考虑关闭缓存功能:~~
2. SD卡配置(内置flash无需修改)
鉴于AVI-MJPEG编码对码率的需求较高,建议提升SD卡时钟频率:
#define TCFG_SD0_CLK 50000000 // SD时钟频率
3. FFMPEG转换指令
3.1 ffmpeg官网地址:https://ffmpeg.org//
3.2 AVI-MJPEG编码转换指令参考
ffmpeg -i test.mp4 -vf "scale=240:296:force_original_aspect_ratio=decrease,pad=240:296:(ow-iw)/2:(oh-ih)/2,fps=24" -c:v mjpeg -q:v 5 -c:a pcm_s16le -ar 16000 -ac 1 -f avi Atest.avi
参数说明:
- -q:v:控制视频质量,数值越小代表质量越高,但生成的文件体积相应增大
3.3 AVI-MJPEG所需的RAM缓冲区大小通过播放打印查看

4. 文件优化说明
AVI-MJPEG文件的大小以及运行RAM的占用可通过以下参数进行优化:
- 帧率(FPS)
- 视频质量(-q:v)
- 视频分辨率
- 音频采样率(-ar)
5. 转换示例
5.1 MP4转换示例(仅供参考,以实际为准)
- 源文件:5分28秒的mp4视频
- 目标格式:AVI-MJPEG
- 分辨率:320x384
- 帧率:23帧/秒
- 生成文件大小:约70M,RAM占用18K
ffmpeg -i test.mp4 -vf "scale=320:384:force_original_aspect_ratio=decrease,pad=320:384:(ow-iw)/2:(oh-ih)/2,fps=23" -c:v mjpeg -q:v 8 -pix_fmt yuv420p -c:a pcm_s16le -ar 16000 -ac 1 -f avi Atest.avi
5.2 GIF转换示例(仅供参考,以实际为准)
- 源文件:2.74M的GIF动图
- 目标格式:AVI-MJPEG
- 分辨率:296x240
- 帧率:40帧/秒
- 生成文件大小:约1.6M
ffmpeg -i test.gif -vf "scale=296:240:force_original_aspect_ratio=decrease,pad=296:240:(ow-iw)/2:(oh-ih)/2,fps=40" -c:v mjpeg -q:v 8 -pix_fmt yuv420p -c:a pcm_s16le -ar 16000 -ac 1 -f avi Atest.avi