摄像头实验-编码视频流
硬件要求:
- DshanPI-CanMV开发板
- Type-C数据线 x2
- GC2093摄像头
开发环境:
- Ubuntu20.04
注意:在学习前请按照《K230 SDK环境搭建》搭建好K230的开发环境或者直接获取资料光盘中搭建好环境的Ubuntu虚拟机。
配套源码:https://pan.baidu.com/s/1VBd0n3FKO0bj8yHOWk4HEw?pwd=ov5d 提取码:ov5d
具体位置: 12_多媒体应用示例源码\06_sample_venc_100ask
1.视频编码架构
典型的编码流程包括了输入图像的接收、图像内容的遮挡和覆盖、图像的编码、以及码流的输出等过程。
编码模块由VENC接收通道、编码通道、2D接收通道、2D运算模块组成。编码能力和2D运算能力见下表。
编码数据流程图中的绿色箭头所示路径,为单独做2D运算的流程。蓝色箭头所示路径为单独做编码运算的流程。紫色箭头所示路径为先做2D运算再进行编码的流程。
表 1-1 编码能力
H264 | HEVC | JPEG | |
---|---|---|---|
输入格式 | YUV420 NV12 8bit, ARGB8888, BGRA8888 | YUV420 NV12 8bit, ARGB8888, BGRA8888 | YUV420 NV12 8bit, YUV422 UYVY 8bit, ARGB8888, BGRA8888 |
输出格式 | YUV420 H.264 Baseline Profile(BP) ; H.264 Main Profile(MP) ; H.264 High Profile(HP); H.264 High 10 Profile(HP) | YUV420 HEVC (H.265) Main ; HEVC (H.265) Main 10 Profile | YUV420 and YUV422 JPEG baseline sequential |
最大分辨率 | 3840x2160 | 3840x2160 | 8192x8192 |
码率控制模式 | CBR/VBR/FIXQP | CBR/VBR/FIXQP | FIXQP |
GOP | I/P帧 | I/P帧 | - |
编码通道 | 4路 | 4路 | 4路 |
注意:H264/HEVC/JPEG共用4路。
表1-2 2D运算能力
video输入格式 | video输出格式 | 叠加数据格式 | 最大分辨率 |
---|---|---|---|
I420/NV12/ARGB8888/BGRA8888 | 同输入格式 | ARGB8888/ARGB4444/ARGB1555 | 3840x2160 |
1.1 编码通道
编码通道作为基本容器,保存编码通道的多种用户设置和管理编码通道的多种内部资源。编码通道完成图像叠加和编码的功能。2D模块实现图像叠加运算,编码器模块实现图像编码,两者既可以单独使用,也可以协同使用。
2.应用层程序编译与解析
2.1 新增程序
2.1.1 新建工程文件夹
在k230_sdk/src/big/mpp/userapps/sample目录下新建工程
mkdir sample_venc_100ask
2.1.2 修改Makefile
修改k230_sdk/src/big/mpp/userapps/sample目录下的Makefile文件,新增sample_venc_100ask工程的编译规则
@cd sample_venc_100ask; make || exit 1
@cd sample_venc_100ask; make clean
2.1.3 进入工程目录
cd sample_venc_100ask/