下面的系列文章记录了如何使用一块linux开发扳和一块OLED屏幕实现视频的播放:
这篇文章主要对项目的实现做整体的介绍, 包括硬件的需求, 最终实现的视频播放效果, 以及软件的实现思路.
1). 硬件需求
- beaglebone black board(之后简称bbb)
- ssd1306 oled屏幕(支持i2c接口)
- 支持cuda的N卡(用于视频处理加速)
2). 效果演示
跳转到6:48直接观看演示
3). 实现原理
下图是系统中各部分的交互关系:
- 待播放视频以mp4文件的形式保存. OLED屏幕不支持彩色, 并且要求每帧视频分辨率为128x64, 所以需要对视频数据进行resize和灰度处理, 使用GPU编程完成这部分的数据处理.
- bbb板子上运行着debian系统, 需要开发OLED屏幕的I2C驱动, 以及一个用户态程序, 其中用户态程序负责接收GPU处理之后的视频数据, 并且通过I2C设备驱动暴露的文件系统接口, 操作屏幕播放视频
总结下来, 实际的代码开发的工作主要包括:
-
Host Machine:
- cuda视频处理加速
- 用户态程序, 调用cuda代码处理视频, 并作为服务器把视频数据发送给bbb
-
bbb板子:
- SSD1306 OLED屏幕的I2C驱动开发
- 用户态程序, 从Host Machine请求数据, 操作设备播放视频
之后的文章中将逐一介绍代码中的实现细节.
4). 文末推广
感觉还不错的小伙伴, 欢迎关注我的**B站账号** , 或者加入QQ群838923389, 一起研究计算机底层技术, 一起搞事情:P