8.2.7. sample video codec 使用说明

8.2.7.1. 程序功能

sample_vdec_basic 实现最基础解码功能,读取本地H264/H265/MJPEG文件,进行解码保存NV12结果

sample_venc_basic 实现最基础编码功能,读取NV12图像,编码为H264(或H265MJPEG),并保存为本地文件

sample_vdec_two_channel 面向需要多通道同时解码的场景,在sample_vdec_basic 基础上增加一路解码通道,实现双通道解码功能。读取本地H264/H265/MJPEG文件,两路同时进行解码分别保存NV12文件。

sample_venc_two_channel 面向需要多通道同时编码的场景,在sample_venc_basic 基础上增加一路编码通道,实现双通道编码功能。读取本地NV12文件,两路同时进行解码分别保存H264(或H265MJPEG)。

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_basicsample_vdec_basicsample_vdec_two_channelsample_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