8.2.7. sample video codec 使用说明
8.2.7.1. 程序功能
sample_vdec_basic
实现最基础解码功能,读取本地H264
/H265
/MJPEG
文件,进行解码保存NV12
结果
sample_venc_basic
实现最基础编码功能,读取NV12
图像,编码为H264
(或H265
或MJPEG
),并保存为本地文件
sample_vdec_two_channel
面向需要多通道同时解码的场景,在sample_vdec_basic
基础上增加一路解码通道,实现双通道解码功能。读取本地H264
/H265
/MJPEG
文件,两路同时进行解码分别保存NV12
文件。
sample_venc_two_channel
面向需要多通道同时编码的场景,在sample_venc_basic
基础上增加一路编码通道,实现双通道编码功能。读取本地NV12
文件,两路同时进行解码分别保存H264
(或H265
或MJPEG
)。
8.2.7.2. 程序开发
源码结构
源码位于:/app/multimedia_samples/sample_video_codec
.
├── example_vdec_basic
├── example_vdec_two_channel
├── example_venc_basic
├── example_venc_two_channel
├── Makefile
├── README.md
├── sample_vdec_basic.c
├── sample_vdec_two_channel.c
├── sample_venc_basic.c
└── sample_venc_two_channel.c
编译
当前代码通过一个Makefile文件配置编译
进入源码目录,执行以下命令进行编译生成sample_venc_basic
、sample_vdec_basic
、sample_vdec_two_channel
、sample_venc_two_channel
程序
$ cd /app/multimedia_samples/sample_video_codec
$ make clean # 清理源码,保持干净的代码环境
$ make
... ... # 一大段编译打印
$ ls
example_vdec_basic example_venc_basic Makefile sample_vdec_basic sample_vdec_two_channel sample_venc_basic sample_venc_two_channel
example_vdec_two_channel example_venc_two_channel README.md sample_vdec_basic.c sample_vdec_two_channel.c sample_venc_basic.c sample_venc_two_channel.c
8.2.7.3. 程序部署
sample_vdec_basic
按照上面的编译流程生成出sample_vdec_basic
程序之后
执行 ./sample_vdec_basic -w width -h height -t ecode_type -f file
其中width为图像宽所包含像素个数
height为为图像高所包含的像素格式
encode_type可以为h264\h265\mjpeg
file为要解码的文件名
sample_venc_basic
按照上面的编译流程生成出sample_venc_basic
程序之后
执行 ./sample_venc_basic -w width -h height -t ecode_type -f file0 -g file1
其中width为图像宽所包含像素个数
height为为图像高所包含的像素格式
ecode_type可以为h264\h265\mjpeg
file0为要编码的文件名需要为NV12格式
file1为要编码的文件名需要为NV12格式,其width和height需要和file0保持一样
sample_vdec_two_channel
按照上面的编译流程生成出sample_vdec_two_channel
程序之后
执行 ./sample_vdec_two_channel -w width -h height -t ecode_type -f file
其中width为图像宽所包含像素个数
height为为图像高所包含的像素格式
encode_type可以为h264\h265\mjpeg
file为要解码的文件名
sample_venc_two_channel
按照上面的编译流程生成出sample_venc_two_channel
程序之后
执行 ./sample_venc_two_channel -w width -h height -t ecode_type -f file0 -g file1
其中width为图像宽所包含像素个数
height为为图像高所包含的像素格式
ecode_type可以为h264\h265\mjpeg
file0为要编码的文件名需要为NV12格式
file1为要编码的文件名需要为NV12格式,其width和height需要和file0保持一样
8.2.7.4. 运行效果说明
sample_vdec_basic
在当前运行目录下生成decode.nv12,该文件内容随着解码内容更新
sample_venc_basic
在当前运行目录下生成sample_venc.h264/sample_venc.h265/sample_venc.jpg。H264/H265文件内容为交替显示是file1和file2
sample_vdec_two_channel
在当前运行目录下生成sample_decode_ch0.nv12和sample_decode_ch1.nv12,该文件内容随着解码内容更新。
sample_venc_two_channel
在当前运行目录下生成sample_venc_ch0.h264(sample_venc_ch0.h265/sample_venc_ch0.jpg)和sample_venc_ch1.h264(sample_venc_ch1.h265/sample_venc_ch1.jpg)。H264/H265文件内容为交替显示是file1和file2