找回密码
 立即注册
查看: 566|回复: 68

一个音视频播放例程【USART-SPI==>DMA-P2P==>SPI, +I2S】@AI8051U

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2025-08-23 14:05:57
已绑定手机

80

主题

2982

回帖

6361

积分

荣誉版主

无情的代码机器

积分
6361
发表于 2025-8-12 21:03:34 | 显示全部楼层 |阅读模式


截图202508122058342091.jpg

视频P2P播放,时间计算:

fps20,50ms 周期
刷屏时间:160*80 一帧刷屏时间28.2ms
帧间隔:50ms-28.2ms=21.8ms

音频双缓冲区交叉播放,利用视频播放帧间隔加载下一个缓冲区音频数据,时间计算:
16000采样率 16bit 双声道 一秒32000字节
一个缓冲区播放时间:4K采样点,一通道2K,播放时间2K/16K*1000ms = 125ms
DMA取点时间:3.3V@900B/ms,4*1024/900=4.55ms


视频预处理:

分辨率160*80缩放示例:
ffmpeg -i xxx.mp4 -vf scale=160:80 -c:a copy src.mp4
分辨率加截取示例:
ffmpeg -ss 00:01:13 -i xxx.mp4  -t 25 -vf scale=160:80 -c:a copy src.mp4
截取xxx.mp4 1分13秒开始,时长25s

资源生成命令:
ffmpeg -i .\src.mp4 -t 25 -vn -ac 2 -f s16le -ar 16000 -acodec pcm_s16le audio.bin
ffmpeg -i .\src.mp4 -t 25 -vf "fps=20" -pix_fmt rgb565be -f rawvideo video.bin

测试前先使用“QSPI_刷Flash专用_40M”固件,烧录音视频文件到W25Q中:
截图202508122054231994.jpg
烧录演示视频:




烧录后屏幕正常初始化完毕刷红等待命令,USB-CDC串口发送video字符串开始播放:

video_play-20250814.zip (3.51 MB, 下载次数: 34)


参考链接:
SPI / QSPI 编程外部串行Flash | 配合ISP软件中【工具 | 串行Flash编程器】,2/5 - QSPI/3组SPI/I2S/I2C,一线制温湿度传感器 国芯人工智能技术交流网站 - AI32位8051交流社区
Ai8051U实现USB全双工声卡,同时 录音/ 放 音,微信通话/腾讯会议 可用, 重磅开源 - 51 发烧友,UAC,极致音频,大国工匠,艺术人生,乐林漫步 国芯人工智能技术交流网站 - AI32位8051交流社区
基于 Ai8051U 的电子鞭炮设计 - 开源广场及教学视频交流 国芯人工智能技术交流网站 - AI32位8051交流社区
AiCube 图形化自动生成程序,驱动 ST7735S,TFT-彩屏, @Ai8051U, 跟帖问TFT, ST7739 - 第9页 - TFT彩屏,触摸屏,DMA-i8080/M6800并口自动刷屏,DMA-SPI刷屏,外设直接到外设 国芯人工智能技术交流网站 - AI32位8051交流社区






2 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

3

主题

2031

回帖

910

积分

等待验证会员

积分
910
发表于 2025-8-12 21:08:00 | 显示全部楼层
国芯人工智能技术团队针对您提供的音视频播放例程“USARTSPI-SPI-P2P+I2S@AI8051U”及配套资料,进行如下专业分析与说明:

本例程基于AI8051U平台,实现了通过SPI、I2S等接口完成音视频数据的传输与播放。其中,视频部分采用P2P(点对点)方式传输,并结合帧率控制与刷屏时间计算,确保画面流畅;音频部分则采用双缓冲区交叉播放机制,以充分利用视频帧间隔时间加载下一缓冲区数据,提升播放连续性。

在视频播放方面,设定为20fps,即每帧刷新周期为50ms。实际刷屏时间为282ms,导致帧间隔为218ms。此配置下,需确保系统具备足够的处理能力以维持稳定帧率,避免画面卡顿或丢帧现象。建议进一步优化图像处理算法或调整刷新频率,以提高整体性能。

音频播放采用双缓冲区设计,每个缓冲区包含4K采样点(单通道2K),采样率为16kHz,每秒32,000字节。因此,每个缓冲区播放时间为125ms。同时,DMA取点时间为455ms,表明数据传输速度可能成为瓶颈。建议优化DMA配置或调整缓冲区大小,以减少等待时间,提升音频播放质量。

测试前需使用“QSPI刷Flash专用40M”固件,将音视频文件烧录至W25Q系列Flash中。该过程可通过ISP软件中的“串行Flash编程器”完成,确保数据准确写入并可被AI8051U平台正确读取。

参考链接提供了关于SPI/QSPI编程、I2S音频处理及USB声卡实现的相关信息,有助于深入理解本例程的技术细节与扩展应用。

综上所述,本例程展示了AI8051U平台在音视频处理方面的强大功能,适用于多种嵌入式应用场景。如需进一步优化或扩展功能,建议结合具体需求调整参数配置,并参考相关技术文档与社区资源进行深入开发。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:303
  • 最近打卡:2025-08-23 00:13:14
已绑定手机

13

主题

190

回帖

1841

积分

金牌会员

积分
1841
发表于 2025-8-12 21:56:06 | 显示全部楼层


没用过I2S,那个抢滩登陆的BGM音效,是双PWM直推WAV,省成本。

这回学习一下I2S。

点评

感谢老铁的鲜花鼓励 这个双PWM直推WAV玩法有空开源分享下学习学习  详情 回复 发表于 2025-8-12 22:15
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2025-08-23 14:05:57
已绑定手机

80

主题

2982

回帖

6361

积分

荣誉版主

无情的代码机器

积分
6361
发表于 2025-8-12 22:15:46 | 显示全部楼层
C_w*** 发表于 2025-8-12 21:56
没用过I2S,那个抢滩登陆的BGM音效,是双PWM直推WAV,省成本。

这回学习一下I2S。

感谢老铁的鲜花鼓励

这个双PWM直推WAV玩法有空开源分享下学习学习
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:303
  • 最近打卡:2025-08-23 00:13:14
已绑定手机

13

主题

190

回帖

1841

积分

金牌会员

积分
1841
发表于 2025-8-13 11:42:10 | 显示全部楼层
erci*** 发表于 2025-8-12 22:15
感谢老铁的鲜花鼓励

这个双PWM直推WAV玩法有空开源分享下学习学习

这阵有点忙,等有时间的,整理一下。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:223
  • 最近打卡:2025-08-23 08:38:01
已绑定手机

137

主题

465

回帖

644

积分

高级会员

积分
644
发表于 2025-8-13 17:15:43 | 显示全部楼层
硬件不可直接替换:由于引脚定义和指令集不同,基于ST7735开发的模块无法直接替换为S6D02A1,反之亦然。例如,用户反馈称误用S6D02A1代替ST7735会导致功能异常,需修改驱动程序4。    佬 ,我只有st7735,怎么用这个啊?

点评

是ST7735驱动  详情 回复 发表于 2025-8-13 17:56
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:223
  • 最近打卡:2025-08-23 08:38:01
已绑定手机

137

主题

465

回帖

644

积分

高级会员

积分
644
发表于 2025-8-13 17:19:05 | 显示全部楼层
Rebuild target 'demo'
compiling main.c...
src\main.c(78): warning C47: 'dat': unreferenced parameter
src\main.c(107): warning C47: 'i': unreferenced local variable
src\main.c(232): warning C47: 'sz': unreferenced local variable
src\main.c(233): warning C47: 'ptr': unreferenced local variable
src\main.c(304): error C168: interrupt: value not in range 0 ... 31
src\main.c(317): error C168: interrupt: value not in range 0 ... 31
src\main.c(349): error C168: interrupt: value not in range 0 ... 31
compiling LCD.c...
src\LCD.c(69): warning C188: 'parameter 1': value truncated
src\LCD.c(71): warning C188: 'parameter 1': value truncated
src\LCD.c(75): warning C188: 'parameter 1': value truncated
src\LCD.c(77): warning C188: 'parameter 1': value truncated
src\LCD.c(84): warning C188: 'parameter 1': value truncated
src\LCD.c(86): warning C188: 'parameter 1': value truncated
src\LCD.c(90): warning C188: 'parameter 1': value truncated
src\LCD.c(92): warning C188: 'parameter 1': value truncated
src\LCD.c(105): warning C188: 'parameter 1': value truncated
src\LCD.c(106): warning C188: 'parameter 1': value truncated
compiling spi.c...
compiling I2S.c...
src\I2S.c(125): error C168: interrupt: value not in range 0 ... 31
compiling TLV320AIC23.c...
compiling video.c...
compiling flash_spi.c...
src\flash_spi.c(266): warning C47: 'sz': unreferenced local variable
src\flash_spi.c(267): warning C47: 'ptr': unreferenced local variable
Target not created.
Build Time Elapsed:  00:00:01 佬,这个怎么解决?

点评

这个例程是C251的,这报错看着是用C51编译,并且没配置中断扩展导致的。 使用C251环境打开工程编译  详情 回复 发表于 2025-8-13 17:55
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:223
  • 最近打卡:2025-08-23 08:38:01
已绑定手机

137

主题

465

回帖

644

积分

高级会员

积分
644
发表于 2025-8-13 17:55:00 | 显示全部楼层

截图202508131756266749.jpg
佬,这里不理解,这3个.bin在哪里?怎么具体烧录?

点评

1L附件压缩包内: [attachimg]111729[/attachimg]  详情 回复 发表于 2025-8-13 17:58
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2025-08-23 14:05:57
已绑定手机

80

主题

2982

回帖

6361

积分

荣誉版主

无情的代码机器

积分
6361
发表于 2025-8-13 17:55:52 | 显示全部楼层
香河英*** 发表于 2025-8-13 17:19
Rebuild target 'demo'
compiling main.c...
src\main.c(78): warning C47: 'dat': unreferenced parameter ...

没配置中断扩展导致的。
https://www.stcaimcu.com/data/do ... %96%AD%E5%8F%B7.zip

截图202508131811381031.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:276
  • 最近打卡:2025-08-23 14:05:57
已绑定手机

80

主题

2982

回帖

6361

积分

荣誉版主

无情的代码机器

积分
6361
发表于 2025-8-13 17:56:52 | 显示全部楼层
香河英*** 发表于 2025-8-13 17:15
硬件不可直接替换:由于引脚定义和指令集不同,基于ST7735开发的模块无法直接替换为S6D02A1,反之亦然。例 ...

是ST7735驱动
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-8-23 22:32 , Processed in 0.837728 second(s), 105 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表