文章目录
一、RV1126音视频项目
1.RV1126的基础课程:
-
2.0. RV1126编译环境的搭建:
-
2.0.1.RV1126的SDK讲解
-
2.0.2.在UBuntu搭建RV1126的SDK交叉编译工具链
-
2.0.3.在RV1126板子上面运行一个最简单的DEMO
-
-
2.1. RV1126视频教程部分:
-
2.1.1.原始视频数据的基础概念:YUV的讲解
-
2.1.2.RV1126视频采集VI模块详解
-
2.1.3.RV1126多线程采集VI模块数据
-
2.1.4.RV1126视频编码模块基础参数详解
-
2.1.5.RV1126视频编码模块码率控制参数讲解
-
2.1.6.RV1126的VI模块绑定VENC模块,并用多线程获取视频编码数据
-
2.1.7.RV1126的RGA模块的讲解
-
2.1.8.RV1126的VI模块绑定RGA模块获取RGA处理过后的码流
-
2.1.9.RV1126的VO视频模块的讲解
-
2.1.10.RV1126的VI模块绑定VO模块输出原始数据到屏幕
-
-
2.2. RV1126音频教程部分:
-
2.2.1.音频原始数据的基础概念:PCM基础概念的讲解
-
2.2.2.RV1126音频采集AI模块详解
-
2.2.3.RV1126多线程采集AI音频数据
-
2.2.4.RV1126音频编码模块参数的讲解
-
2.2.5.RV1126的AI模块绑定AENC模块获取每一帧音频编码码流
-
2.2.6.RV1126的AO模块讲解
-
2.在UBuntu系统搭建SDK和SDK介绍

上图是RV1126的SDK结构框图,这里面有很多个文件夹,我们会一一介绍到:
app: app目录主要包含了IPC的一些 DEMO
buildroot:这个是Linux平台上构建的嵌入式Linux系统框架
device:内核配置的选项,这里面的内核配置有多种机器可以选择。
IMAGE:空文件夹
prebuilts: RV1126交叉编译工具链
rkbin: 主要存放Rockchip不开源的bin,包括脚本、打包工具等
rockdev: 不同的img
u-boot: 是一个主要用于嵌入式系统的引导加载程序
docs: 相关的技术文档
external: RV1126的相关例程,这个文件夹的内容是非常重要的
kernel: RV1126烧写的内核
tools:RV1126的工具,包括烧录工具、升级工具等等。
3.整体编译RV1126的SDK环境
-
3.1.调用source envsetup.sh指令选择开发板类型
- 先切换SDK目录
- 在source envsetup.sh
- 从上面sosurceenvsetup.sh的命令可以看到这里有好多个选项,但我们真正使用的选项是85:rockchip_rv1126_rv1109_spi_nand
-
3.2.使用./build.sh lunch去选择Board类型
- 调用./build.sh
lunch弹出了很多的Board类型,这里我们选择的是2,BoardConfig-38*38-spi-nand.mk。
- 调用./build.sh
-
3.3使用./build.sh去整体编译SDK
- ./build.sh就是对整个SDK进行编译,截图的地方就是编译的过程。整个编译需要花费的时间久
-
3.4.在rockdev编译出对应的镜像

上面这里是编译出来的整个img,那我们在开发中需要用到的是update.img,update.img可以烧录整个板子。
4.RV1126固件烧录
二、视频部分讲解
1.YUV讲解
1.1YUV原理讲解
YUV是一种常见的视频像素格式,经常用在视频编解码上面,YUV分别由Y分量和U、V分量(红色投影Cr)组成。Y分量指的是亮度分量,也就是我们经常说的灰阶值,相当于一副灰色的图像。而U分量和V分量表示的是色度分量,它的作用就是用于影像的色彩 以及**饱和度,**常用于指定像素的颜色,U分量是图像蓝色部分去掉亮度Y,V分量是图像红色部分去掉亮度Y。换言之如果一副图像只有Y分量,没有UV分量就相当于我们看黑白电视一样,没有颜色,所以现在大部分彩色电视都引用了YUV像素格式。
2.YUV的优势
YUV和RGB是目前最流行的两套颜色格式,但是在我们音视频编解码和网络传输的时候基本上都会用YUV格式,而非RGB格式。这是由于YUV在网络传输的时候只需要占用很少的带宽进行传输,这能够大大节约存储空间、并且提****高传输效率。比方说,使用YUV420P格式进行采样能够比RGB节约超过1/2的存储空间。
3.YUV采样格式
下面我们来说下YUV的采样格式,现在主流的YUV采样方式一般分三种分别是:YUV444、YUV422、YUV420。我们来看看这三种采样格式的区别:
- 3.1 YUV444

YUV444采样,相当于Y、U、V三个分量采用相同的采样比例进行采样(亮度(Y)和色度(U、V)的采样数量完全一样多) 。所以用YUV444采样生成的图像,YUV三个分量的信息是完整的,都是8bit,也就是一个字节。这里的YUV444顾名思义就是4个Y分量、4个U分量、4个V分量。Y分量大小:w *h;U分量大小:w * h;V分量大小:wh。所以,我们用YUV444格式去采样一个1920 *1080的图像的时候,得到的大小等于:(1920 * 1080 * 8 + 1920 1080 * 8 + 1920 * 1080 * 8)/8/1024/1024 ~=5.94M**。从计算公式可以看出,YUV444每一帧图像大小和RGB差不多,所以在真正开发中很少会用到。(bit是计算机能识别的最小数据单位)**
- 3.2YUV422

YUV422采样,相当于U、V分量是以Y分量采样的一半进行采样,Y分量和UV分量按照2:1的比例进行采样(也可以理解为两个Y分量对应一个UV分量)。就比方说,若一个水平方向有8个像素点,那么采样了8个Y分量,那么UV分量只有4个。这里采样用的是4个Y分量、2个U分量、2个V分量进行采样。Y分量大小:w
* h;U分量:w * h /2;V分量:w * h /2。所以,用YUV422采样的大小是:**(1920 * 1080 * 8 +(1920 * 1080)/2 * 8 + (1920 *****1080)/2 * 8)/8/1024/1024 ~= 3.96M。
3.3 YUV420:

YUV420采样,相当于每一行扫描的时候只扫描一种色度分量(U分量或者V分量),和Y分量按照2:1的方式进行采样(也可以理解为四个Y分量对应一个UV分量)。就比方说,在第一行扫描的时候,YV分量按照2:1的方式进行采样,那么YU分量也是用2:1的方式采样,所以对于每个色度分量来说,它的水平方向和垂直方向的采样比都是2:1。这里采用的是4个Y分量、2个U分量、0个V分量采集,而下一行的则是用4个Y分量、0个U分量、2个V分量采样。所以,Y分量大小:w * h;U分量:w * h /4; V分量:w \h/4。所以用YUV420采集一个1920 * 1080的图像大小:(1920 * 1080 * 8 + (1920 ** *1080)/4 * 8 + (1920 * 1080)/4 *
8)/8/1024/1024 ~=2.97M 。**可以看到用YUV420采样的图像比YUV444和YUV422都节省空间,因此它是目前最主流的采样格式。