rk3588 mpp 视频硬编解码测试

rk3588 mpp demo 使用记录。

1 下载源代码

MPP 源代码发布官方地址:https://github.com/rockchip-linux/mpp
发布分支为 release 分支,开发分支为 develop 分支,默认为开发分支。
下载命令:git clone https://github.com/rockchip-linux/mpp.git

2 编译

MPP 源代码编译脚本为 cmake,需要依赖 2.8.12 以上的版本,建议使用 2.8.12 版,使用高版本的 cmake
工具可能会产生较多的 warning。

2.1 Android 平台交叉编译

编译 Android 库需要使用 ndk 环境,默认脚本使用 android-ndk-r10d 进行编译。
r10d ndk 的下载路径可以在源代码目录下的 build/android/ndk_links.md 文件里查找。
把下载好的 ndk 解压到/home/pub/ndk/android-ndk-r10d,或者手动修改 build/android/目录下
env_setup.sh 脚本的 ANDROID_NDK 变量路径。
进入 build/android/arm/目录,运行 make-Android.bash 脚本生成编译用 Makefile,运行 make –j16 进
行编译。

2.2 Unix/Linux 平台编译

先配置 build/linux/arm/目录下 arm.linux.cross.cmake 文件里的工具链,再运行 make-Makefiles.bash 脚
本通过 cmake 生成 Makefile,最后运行 make –j16 进行编译。
MPP 也支持直接在开发板运行的 Debian 上编译。

3 将编译文件,和对应库拷贝到设备

4 指令说明

mpi_enc_test 的命令参数中,图像宽度(w)图像高度(h),码流类型(t)为强制要求参数,
其他参数如输入文件(i),输出文件(o),编码帧数(n)等为可选参数。
如果没有指定输入文件,mpi_enc_test会生成默认彩条图像进行编码。
以编码/sdcard 下的 soccer_720x480_30fps.yuv 文件 10 帧为例,对 demo 和输出进行说明。

运行的命令为:
mpi_enc_test -w 720 -h 480 -t 7 -i /sdcard/soccer_720x480_30fps.yuv -o /sdcard/out.h264 -n 10
mpi_dec_test 的命令参数中,输入文件(i),码流类型(t)为强制要求的参数,其他参数如输出文件(o),图像宽度(w)图像高度(h),
解码帧数(n)等为可选参数,影响不大。
后面的打印显示了 MPP 库支持的 coding 格式,支持 MPEG2/4,H.263/4/5,VP8/9 的解码,id 后的数字为格式对应的-t 项后的参数值。
参数值来源于 OMX 的定义,HEVC 和 AVS 的格式参数值与其他的格式参数值区别较大,需要留意。
然后以/sdcard/下的 tennis200.h264 解码 10 帧为例,对 demo 和输出进行说明。

运行的命令为:
mpi_dec_test -t 7 -i /sdcard/tennis200.h264 -n 10
-t 7 表示是 H.264 码流,-i 表示输入文件,-n 10 表示解码 10 帧

5 将视频转换成 YUV 格式进行编码和解码

在 linux 服务器中使用 ffmpeg 工具进行转换

将 mp4 格式转换成 yuv
ffmpeg -i input.mp4 -s 640x480 -pix_fmt yuv420p output.yuv 
备注:-i 表示设定输入流-s 设定画面的宽与高(此项很重要)-pix_fmt 设定的像素格式

播放 yuv 视频
ffplay -video_size 640x480 -i output.yuv-video_size 
播放的视频文件的帧宽度和帧高度(此项需和前面转换的 “-s 640x480” 保持一致)-i 表示指定的输入文件

你可能感兴趣的:(音视频)