多媒体
zmedia 是一款专业的多媒体 SDK 开发包。本文档将介绍如何获取及编译 zmedia 开发包,并提供示例代码。
进入开发环境
# 进入 zdocker 开发环境,如果已在 zdocker 中,则无需重复进入
zdocker
获取 zmedia 开发包
说明: 获取开发包前,请确认已安装Docker环境。具体操作请参考 快速上手。
执行以下命令,获取 zmedia 开发包。
# 创建工作目录
mkdir sdk-workspace
cd sdk-workspace
# 下载安装工具,并给予可执行权限
wget http://developer.zhcomputing.com/artifactory/release/zhihesdk/v2.9.0/build.sh -O build.sh && chmod +x ./build.sh
# 下载 zmedia 开发包, build.sh 会将 SDK 包自动解压到 zmedia 目录
./build.sh -s zmedia-sdk
文件介绍
zmedia 关键文件及介绍如下。
zmedia
├── example/ # 示例代码目录,快速测试资源
│ └── include/ # 子模块头文件
│ └── common/ # 模块测试通用函数
│ └── mod/ # 子模块测试入口文件
│ └── test_source/ # 快速测试资源
├── include/ # 头文件目录
│ └── zmedia/ # 子模块头文件
├── lib/ # 库文件目录
│ └── riscv64-linux-gnu/
│ └── libzmedia.so # 编译库文件(无需拷贝至运行环境,SDK 已包含)
├── share/
│ └── cmake/Modules/ # CMake 工程文件
└── toolchain.cmake # 工具链配置文件
| 文件名 | 说明 |
|---|---|
| example/ | 包含子模块和相关 pipeline 的实例代码,可参考实现功能及 CMakeLists 编译配置 |
| include/zmedia/ | 包含所有子模块的头文件 |
| lib/ | 包含 zmedia 依赖的编译库文件(无需部署到运行环境) |
| share/cmake/Modules/ | 包含 CMake 模块文件 |
编译 zmedia
说明:
- 目标系统中须预装 zmedia 运行环境,编译后生成可执行程序,可手动上载到目标系统中运行。
- 项目配置方法,可参考
example/CMakeLists.txt。
-
创建并进入编译目录。
cd zmedia
mkdir build
cd build -
配置编译工程,指定工具链文件。
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DWITH_FFMPEG=ON ../example -
编译。
make -j4编译结果如下。
CMakeCache.txt CMakeFiles cmake_install.cmake common Makefile mod其中可执行文件存放在
mod目录下。可执行文件列表如下。test_mpi_adectest_mpi_aenctest_mpi_aitest_mpi_ai2aotest_mpi_aotest_mpi_rtsp_vdec_venc_rtsptest_mpi_transcodetest_mpi_vdectest_mpi_venctest_mpi_vgstest_mpi_vitest_mpi_vi2venctest_mpi_votest_mpi_vpss
-
将可执行文件上传到开发板上。
示例程序
本节编解码示例均在 example 中运行。
视频编码示例
zmedia 支持 H264、H265、JPEG、MJPEG 的视频编码。
示例命令
# 在开发板上运行
test_mpi_venc -i shields_640x480_nv12.yuv -o shields_640x480_nv12_output_dir/ -w 640 -h 480
输入
example/test_source/shields_640x480_nv12.yuv
输出
AVC 裸码流,可使用 ffplay 或者 port play 查看。
shields_640x480_nv12_output_dir/test_0.bin
