[应用相关] AT32视频播放器(MJPEG 编码的avi 格式,240X320)

[复制链接]
4177|5
 楼主| muyichuan2012 发表于 2025-1-7 10:37 | 显示全部楼层 |阅读模式
本帖最后由 muyichuan2012 于 2025-1-7 10:39 编辑

AT32视频播放器

(MJPEG 编码的avi 格式,240X320)




4.26 案例 视频显示
4.26.1 简介
AT32 SURF 板载了一个3.5 寸的TFT LCD 液晶显示屏,分辨率为480*320。通过软件解码库将SD
卡里面的视频文件解码后,显示在LCD 液晶显示屏,当解码320*240 视频时,解码速度大约在15-20FPS。解码参数:
 视频尺寸不大于320*240
 视频文件格式为MJPEG 编码的avi 格式
 音频文件格式为未压缩的16 位PCM 格式
如果视频格式不满足上述的需求,可以通过视频转换软件进行转换,如下图所示:

图77. 视频格式转换配置
82784677c917fdaaef.png

图78. 视频格式转换配置
9041677c91edc4803.png

步骤1:选择需要转换的视频
步骤2:选择输出格式为avi
步骤3:选择高级配置
步骤3.1:选择视频格式为MJPEG
步骤3.2:选择视频尺寸不大于320*240
步骤3.3:选择视频帧数,在320*240 下,最高可以选择15
步骤3.4:选择音频格式为PCM S16LE
步骤3.5:选择音频采样速率
步骤4:设置输出文件夹


4.26.2 资源准备
 硬件环境:
对应产品型号的AT-SURF-F437 Board
 软件环境:
AT32F435_437_Firmware_Library_V2.x.x\project\at_surf_f437\examples\video
 示例视频:
视频原始路径:Utilities\VIDEO,复制VIDEO 文件夹到SD 卡根目录下

4.26.3 硬件设计
本案例使用的硬件资源有TFT LCD 液晶显示屏、SD 卡、PCA9555 IO 扩展芯片,对应的引脚如下:
表35. 硬件资源使用

76614677c921317fa9.png
19551677c92217f3cd.png

表36. PCA9555 使用
25232677c9243585c9.png

对应的电路原理如下:
图79. TFT LCD 电路原理图

96843677c9256ab1dc.png


图80. PCA9555 电路原理图
39049677c926aaaa54.png

4.26.4 软件设计
1) TFT LCD 测试
 初始化TFT LCD
 将图片解码后显示在LCD 屏上
2) 代码介绍
 main 函数代码描述


  1. int main(void)
  2. {
  3. /* 初始化系统时钟 */
  4. system_clock_config();
  5. /* 初始化中断优先级分组 */
  6. nvic_priority_group_config(NVIC_PRIORITY_GROUP_4);
  7. /* 初始化延时函数 */
  8. delay_init();
  9. /* 初始化LCD */
  10. lcd_init(LCD_DISPLAY_VERTICAL);
  11. /* 显示信息 */
  12. lcd_string_show(10, 20, 200, 24, 24, (uint8_t *)" Video test");
  13. /* 初始化文件系统 */
  14. if(file_system_init() != SUCCESS)
  15. {
  16. lcd_string_show(10, 55, 300, 24, 24, (uint8_t *)"sd card init error");
  17. while(1);
  18. }
  19. /* 初始化IO 扩展芯片 */
  20. pca9555_init(PCA_I2C_CLKCTRL_100K);
  21. /* 初始化按键 */
  22. /* initialize key */
  23. /* 初始化可调电阻 */
  24. variable_resistor_init();
  25. /* 初始化音频 */
  26. audio_init();
  27. /* 初始化串口 */
  28. uart_print_init(115200);
  29. /* 播放视频 */
  30. video_play(&video_info);
  31. while(1)
  32. {
  33. }
  34. }
void video_play(video_type *video)函数代码描述
  1. /**
  2. * [url=home.php?mod=space&uid=247401]@brief[/url] play video.
  3. * @param video: video information structure.
  4. * @retval none
  5. */
  6. void video_play(video_type *video)


4.26.5 下载验证
 在LCD 屏上播放视频。
 由于播放音乐,喇叭功耗较高,如果在播放过程中发生了重启,可以调节VR 旋钮降低音量。

图81. 实验效果
79702677c92f5d3f8f.png

视频效果哔哩哔哩展示:https://www.bilibili.com/video/B ... eply113757963425716



问天少年 发表于 2025-1-7 15:31 | 显示全部楼层
这个好强啊,那个播放时间怎么做出来的
可怜的小弗朗士 发表于 2025-1-7 15:40 | 显示全部楼层
这个源码可以分享一下不

评论

可以,预计下周  发表于 2025-1-7 17:33
chenjun89 发表于 2025-1-7 21:06 来自手机 | 显示全部楼层
这个帧率在TFT可以了,再高也感觉不出来差距。
风之呢喃 发表于 2025-1-9 17:57 | 显示全部楼层
这个帧率太棒了,实现的真好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

2077

帖子

37

粉丝
快速回复 在线客服 返回列表 返回顶部