香橙派Pi5基于Qt5视频硬编码编译

香橙派Pi5视频通过Qt5硬编码编译

文章目录

  • 香橙派Pi5视频通过Qt5硬编码编译
  • 前言
  • 一、RKMpp和RKMpi是什么?
  • 二、编译RKMPP
      • 1.下载地址
      • 2.文件结构
      • 3.开始编译
      • 4.编译MPI环境
      • 5.执行安装MPI环境
      • 6.执行安装MPP环境
    • 至此我们的MPI和MPP安装完成
  • 三、安装Qt
  • 四、Qt项目配置RKMpp和RKMpi
    • 1.导入依赖文件
      • ① 通过项目导入
      • ② 导入外部依赖
      • ③ 选择依赖
      • ④ 依赖管理
    • 2.配置.pro文件
    • 3.配置.pri文件
    • 4.测试代码
    • 5.运行代码看看效果
  • 总结


前言

香橙派新推出了Pi5的电脑,但是官方教程还不是很完善。但是Pi5的电脑使用的是RK3588S的芯片我想应该和RK3588视频硬编码差不多,所以就用RK官方的mpp编码跑一下在RK3588S上Qt的编译


一、RKMpp和RKMpi是什么?

RKMpp是RK(瑞芯微)公司提供的一个视频硬件便解码库,RKMPI通过RKMPP提供底层接口实现媒体的操作处理。在目前最新的RK3588系列芯片上最高可以达到8K60fps的视频编解码。

二、编译RKMPP

1.下载地址

git clone https://github.com/rockchip-linux/mpp.git

2.文件结构

如果觉得太长了还是不用拉开看吧

mpp-develop
├── build
│   ├── android
│   │   ├── aarch64
│   │   │   ├── fix
│   │   │   │   ├── libc.so
│   │   │   │   └── readme.txt
│   │   │   └── make-Android.bash
│   │   ├── Android.mk
│   │   ├── android.toolchain.cmake
│   │   ├── arm
│   │   │   └── make-Android.bash
│   │   ├── env_setup.sh
│   │   ├── ndk_links.md
│   │   ├── README.md
│   │   ├── update.sh
│   │   └── x86
│   │       └── make-Android.bash
│   ├── cmake
│   │   └── version.in
│   ├── linux
│   │   ├── aarch64
│   │   │   ├── arm.linux.cross.cmake
│   │   │   └── make-Makefiles.bash
│   │   ├── arm
│   │   │   ├── arm.linux.cross.cmake
│   │   │   └── make-Makefiles.bash
│   │   ├── x86
│   │   │   └── sofia-3gr
│   │   │       ├── make-Makefiles.bash
│   │   │       └── sofia-3gr.linux.cross.cmake
│   │   └── x86_64
│   │       └── make-Makefiles.bash
│   ├── vc10-x86_64
│   │   ├── build-all.bat
│   │   └── make-solutions.bat
│   └── vc12-x86_64
│       ├── build-all.bat
│       └── make-solutions.bat
├── CMakeLists.txt
├── debian
│   ├── changelog
│   ├── compat
│   ├── control
│   ├── copyright
│   ├── docs
│   ├── librockchip-mpp1.install
│   ├── librockchip-mpp-dev.install
│   ├── librockchip-vpu0.install
│   ├── README.Debian
│   ├── README.source
│   ├── rockchip-mpp-demos.install
│   ├── rules
│   └── source
│       └── format
├── doc
│   ├── design
│   │   ├── 1.mpp_design.txt
│   │   ├── 2.kernel_driver.txt
│   │   ├── 3.mpp_buffer.txt
│   │   └── 4.mpp_task.txt
│   └── readme.txt
├── inc
│   ├── mpp_buffer.h
│   ├── mpp_compat.h
│   ├── mpp_err.h
│   ├── mpp_frame.h
│   ├── mpp_log_def.h
│   ├── mpp_log.h
│   ├── mpp_meta.h
│   ├── mpp_packet.h
│   ├── mpp_rc_api.h
│   ├── mpp_rc_defs.h
│   ├── mpp_task.h
│   ├── rk_hdr_meta_com.h
│   ├── rk_mpi_cmd.h
│   ├── rk_mpi.h
│   ├── rk_type.h
│   ├── rk_vdec_cfg.h
│   ├── rk_vdec_cmd.h
│   ├── rk_venc_cfg.h
│   ├── rk_venc_cmd.h
│   ├── rk_venc_rc.h
│   ├── rk_venc_ref.h
│   ├── vpu_api.h
│   └── vpu.h
├── LICENSE.md
├── mpp
│   ├── base
│   │   ├── CMakeLists.txt
│   │   ├── inc
│   │   │   ├── mpp_2str.h
│   │   │   ├── mpp_bitput.h
│   │   │   ├── mpp_bitread.h
│   │   │   ├── mpp_bitwrite.h
│   │   │   ├── mpp_buffer_impl.h
│   │   │   ├── mpp_buf_slot.h
│   │   │   ├── mpp_cluster.h
│   │   │   ├── mpp_dec_cb_param.h
│   │   │   ├── mpp_dec_cfg_impl.h
│   │   │   ├── mpp_enc_cb_param.h
│   │   │   ├── mpp_enc_cfg_impl.h
│   │   │   ├── mpp_enc_ref.h
│   │   │   ├── mpp_enc_refs.h
│   │   │   ├── mpp_frame_impl.h
│   │   │   ├── mpp_meta_impl.h
│   │   │   ├── mpp_packet_impl.h
│   │   │   ├── mpp_task_impl.h
│   │   │   └── mpp_trie.h
│   │   ├── mpp_2str.c
│   │   ├── mpp_bitput.c
│   │   ├── mpp_bitread.c
│   │   ├── mpp_bitwrite.c
│   │   ├── mpp_buffer.cpp
│   │   ├── mpp_buffer_impl.cpp
│   │   ├── mpp_buf_slot.cpp
│   │   ├── mpp_cfg.cpp
│   │   ├── mpp_cluster.cpp
│   │   ├── mpp_dec_cfg.cpp
│   │   ├── mpp_dec_hdr_meta.c
│   │   ├── mpp_enc_cfg.cpp
│   │   ├── mpp_enc_ref.cpp
│   │   ├── mpp_enc_refs.cpp
│   │   ├── mpp_frame.cpp
│   │   ├── mpp_meta.cpp
│   │   ├── mpp_packet.cpp
│   │   ├── mpp_task.cpp
│   │   ├── mpp_task_impl.cpp
│   │   ├── mpp_trie.cpp
│   │   └── test
│   │       ├── CMakeLists.txt
│   │       ├── mpp_bit_read_test.c
│   │       ├── mpp_bit_test.c
│   │       ├── mpp_buffer_test.c
│   │       ├── mpp_cluster_test.c
│   │       ├── mpp_dec_cfg_test.c
│   │       ├── mpp_enc_cfg_test.c
│   │       ├── mpp_enc_ref_test.c
│   │       ├── mpp_meta_test.c
│   │       ├── mpp_packet_test.c
│   │       ├── mpp_task_test.c
│   │       └── mpp_trie_test.c
│   ├── CMakeLists.txt
│   ├── codec
│   │   ├── CMakeLists.txt
│   │   ├── dec
│   │   │   ├── av1
│   │   │   │   ├── av1d_api.c
│   │   │   │   ├── av1d_cbs.c
│   │   │   │   ├── av1d_cbs.h
│   │   │   │   ├── av1d_codec.h
│   │   │   │   ├── av1d_common.h
│   │   │   │   ├── av1d_parser2_syntax.c
│   │   │   │   ├── av1d_parser.c
│   │   │   │   ├── av1d_parser.h
│   │   │   │   ├── av1d_probs.c
│   │   │   │   ├── av1_entropymode.c
│   │   │   │   ├── av1_entropymode.h
│   │   │   │   ├── av1.h
│   │   │   │   └── CMakeLists.txt
│   │   │   ├── avs
│   │   │   │   ├── avsd_api.c
│   │   │   │   ├── avsd_parse.c
│   │   │   │   ├── avsd_parse.h
│   │   │   │   └── CMakeLists.txt
│   │   │   ├── avs2
│   │   │   │   ├── avs2d_api.c
│   │   │   │   ├── avs2d_dpb.c
│   │   │   │   ├── avs2d_dpb.h
│   │   │   │   ├── avs2d_global.h
│   │   │   │   ├── avs2d_parse.c
│   │   │   │   ├── avs2d_parse.h
│   │   │   │   ├── avs2d_ps.c
│   │   │   │   ├── avs2d_ps.h
│   │   │   │   └── CMakeLists.txt
│   │   │   ├── CMakeLists.txt
│   │   │   ├── dummy
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── dummy_dec_api.c
│   │   │   ├── h263
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── h263d_api.c
│   │   │   │   ├── h263d_parser.c
│   │   │   │   └── h263d_parser.h
│   │   │   ├── h264
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── h264d_api.c
│   │   │   │   ├── h264d_dpb.c
│   │   │   │   ├── h264d_dpb.h
│   │   │   │   ├── h264d_fill.c
│   │   │   │   ├── h264d_fill.h
│   │   │   │   ├── h264d_global.h
│   │   │   │   ├── h264d_init.c
│   │   │   │   ├── h264d_init.h
│   │   │   │   ├── h264d_parse.c
│   │   │   │   ├── h264d_parse.h
│   │   │   │   ├── h264d_pps.c
│   │   │   │   ├── h264d_pps.h
│   │   │   │   ├── h264d_scalist.c
│   │   │   │   ├── h264d_scalist.h
│   │   │   │   ├── h264d_sei.c
│   │   │   │   ├── h264d_sei.h
│   │   │   │   ├── h264d_slice.c
│   │   │   │   ├── h264d_slice.h
│   │   │   │   ├── h264d_sps.c
│   │   │   │   └── h264d_sps.h
│   │   │   ├── h265
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── h265d_codec.h
│   │   │   │   ├── h265d_defs.h
│   │   │   │   ├── h265d_parser2_syntax.c
│   │   │   │   ├── h265d_parser.c
│   │   │   │   ├── h265d_parser.h
│   │   │   │   ├── h265d_ps.c
│   │   │   │   ├── h265d_refs.c
│   │   │   │   └── h265d_sei.c
│   │   │   ├── jpeg
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── jpegd_parser.c
│   │   │   │   └── jpegd_parser.h
│   │   │   ├── m2v
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── m2vd_api.c
│   │   │   │   ├── m2vd_codec.h
│   │   │   │   ├── m2vd_com.h
│   │   │   │   ├── m2vd_parser.c
│   │   │   │   └── m2vd_parser.h
│   │   │   ├── mpg4
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── mpg4d_api.c
│   │   │   │   ├── mpg4d_parser.c
│   │   │   │   └── mpg4d_parser.h
│   │   │   ├── vp8
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── vp8d_api.c
│   │   │   │   ├── vp8d_codec.h
│   │   │   │   ├── vp8d_data.h
│   │   │   │   ├── vp8d_parser.c
│   │   │   │   └── vp8d_parser.h
│   │   │   └── vp9
│   │   │       ├── CMakeLists.txt
│   │   │       ├── vp9d_api.c
│   │   │       ├── vp9data.h
│   │   │       ├── vp9d_codec.h
│   │   │       ├── vp9d_parser2_syntax.c
│   │   │       ├── vp9d_parser.c
│   │   │       ├── vp9d_parser.h
│   │   │       ├── vp9.h
│   │   │       ├── vpx_rac.c
│   │   │       └── vpx_rac.h
│   │   ├── enc
│   │   │   ├── CMakeLists.txt
│   │   │   ├── dummy
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   └── dummy_enc_api.c
│   │   │   ├── h264
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── h264e_api_v2.c
│   │   │   │   ├── h264e_debug.h
│   │   │   │   ├── h264e_dpb.c
│   │   │   │   ├── h264e_dpb.h
│   │   │   │   ├── h264e_pps.c
│   │   │   │   ├── h264e_pps.h
│   │   │   │   ├── h264e_sei.c
│   │   │   │   ├── h264e_sei.h
│   │   │   │   ├── h264e_slice.c
│   │   │   │   ├── h264e_slice.h
│   │   │   │   ├── h264e_sps.c
│   │   │   │   └── h264e_sps.h
│   │   │   ├── h265
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── h265e_api.c
│   │   │   │   ├── h265e_codec.h
│   │   │   │   ├── h265e_context_table.h
│   │   │   │   ├── h265e_dpb.c
│   │   │   │   ├── h265e_dpb.h
│   │   │   │   ├── h265e_enctropy.c
│   │   │   │   ├── h265e_enctropy.h
│   │   │   │   ├── h265e_header_gen.c
│   │   │   │   ├── h265e_header_gen.h
│   │   │   │   ├── h265e_ps.c
│   │   │   │   ├── h265e_ps.h
│   │   │   │   ├── h265e_slice.c
│   │   │   │   ├── h265e_slice.h
│   │   │   │   ├── h265e_stream.c
│   │   │   │   ├── h265e_stream.h
│   │   │   │   └── h265e_syntax.c
│   │   │   ├── jpeg
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── jpege_api_v2.c
│   │   │   │   └── jpege_debug.h
│   │   │   └── vp8
│   │   │       ├── CMakeLists.txt
│   │   │       ├── vp8e_api_v2.c
│   │   │       ├── vp8e_debug.h
│   │   │       ├── vp8e_rc.c
│   │   │       └── vp8e_rc.h
│   │   ├── enc_impl.cpp
│   │   ├── inc
│   │   │   ├── av1d_api.h
│   │   │   ├── avs2d_api.h
│   │   │   ├── avsd_api.h
│   │   │   ├── dummy_dec_api.h
│   │   │   ├── dummy_enc_api.h
│   │   │   ├── enc_impl_api.h
│   │   │   ├── enc_impl.h
│   │   │   ├── h263d_api.h
│   │   │   ├── h264d_api.h
│   │   │   ├── h264e_api_v2.h
│   │   │   ├── h265d_api.h
│   │   │   ├── h265e_api.h
│   │   │   ├── jpegd_api.h
│   │   │   ├── jpege_api_v2.h
│   │   │   ├── m2vd_api.h
│   │   │   ├── mpg4d_api.h
│   │   │   ├── mpp_dec.h
│   │   │   ├── mpp_dec_impl.h
│   │   │   ├── mpp_dec_normal.h
│   │   │   ├── mpp_dec_no_thread.h
│   │   │   ├── mpp_enc.h
│   │   │   ├── mpp_enc_impl.h
│   │   │   ├── mpp_parser.h
│   │   │   ├── mpp_rc.h
│   │   │   ├── parser_api.h
│   │   │   ├── rc
│   │   │   │   ├── rc_vepu540.h
│   │   │   │   └── rc_vepu.h
│   │   │   ├── rc_data_base.h
│   │   │   ├── rc_data.h
│   │   │   ├── rc_data_impl.h
│   │   │   ├── rc.h
│   │   │   ├── rc_hal.h
│   │   │   ├── vp8d_api.h
│   │   │   ├── vp8e_api_v2.h
│   │   │   └── vp9d_api.h
│   │   ├── mpp_dec.cpp
│   │   ├── mpp_dec_debug.h
│   │   ├── mpp_dec_normal.cpp
│   │   ├── mpp_dec_no_thread.cpp
│   │   ├── mpp_enc_debug.h
│   │   ├── mpp_enc_impl.cpp
│   │   ├── mpp_enc_v2.cpp
│   │   ├── mpp_parser.cpp
│   │   ├── mpp_rc.cpp
│   │   └── rc
│   │       ├── CMakeLists.txt
│   │       ├── h264e_rc.c
│   │       ├── h264e_rc.h
│   │       ├── h265e_rc.c
│   │       ├── h265e_rc.h
│   │       ├── jpege_rc.c
│   │       ├── jpege_rc.h
│   │       ├── rc_base.cpp
│   │       ├── rc_base.h
│   │       ├── rc.cpp
│   │       ├── rc_ctx.h
│   │       ├── rc_data_base.cpp
│   │       ├── rc_data.cpp
│   │       ├── rc_data_impl.cpp
│   │       ├── rc_debug.h
│   │       ├── rc_impl.cpp
│   │       ├── rc_impl.h
│   │       ├── rc_model_v2.c
│   │       ├── rc_model_v2.h
│   │       ├── rc_model_v2_smt.c
│   │       ├── rc_model_v2_smt.h
│   │       ├── test
│   │       │   ├── CMakeLists.txt
│   │       │   ├── rc_api_test.c
│   │       │   └── rc_base_test.c
│   │       ├── vp8e_rc.c
│   │       └── vp8e_rc.h
│   ├── codecs.cmake
│   ├── common
│   │   ├── av1d_syntax.h
│   │   ├── avs2d_syntax.h
│   │   ├── avsd_syntax.h
│   │   ├── dxva_syntax.h
│   │   ├── h263d_syntax.h
│   │   ├── h264d_syntax.h
│   │   ├── h264e_syntax.h
│   │   ├── h264_syntax.h
│   │   ├── h265d_syntax.h
│   │   ├── h265e_syntax.h
│   │   ├── h265e_syntax_new.h
│   │   ├── h265_syntax.h
│   │   ├── jpegd_syntax.h
│   │   ├── jpege_syntax.h
│   │   ├── m2vd_syntax.h
│   │   ├── mpg4d_syntax.h
│   │   ├── vp8d_syntax.h
│   │   ├── vp8e_syntax.h
│   │   └── vp9d_syntax.h
│   ├── hal
│   │   ├── CMakeLists.txt
│   │   ├── common
│   │   │   ├── CMakeLists.txt
│   │   │   ├── h264
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h264e_api_v2.c
│   │   │   │   ├── hal_h264e_debug.h
│   │   │   │   ├── hal_h264e_stream_amend.c
│   │   │   │   └── hal_h264e_stream_amend.h
│   │   │   ├── h265
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h265e_api_v2.c
│   │   │   │   └── hal_h265e_debug.h
│   │   │   ├── hal_bufs.c
│   │   │   ├── hal_bufs.h
│   │   │   ├── hal_info.c
│   │   │   ├── hal_info.h
│   │   │   └── jpeg
│   │   │       ├── CMakeLists.txt
│   │   │       ├── hal_jpege_api_v2.c
│   │   │       ├── hal_jpege_debug.h
│   │   │       ├── hal_jpege_hdr.c
│   │   │       └── hal_jpege_hdr.h
│   │   ├── dummy
│   │   │   ├── CMakeLists.txt
│   │   │   ├── hal_dummy_dec_api.c
│   │   │   └── hal_dummy_enc_api.c
│   │   ├── hal_task.cpp
│   │   ├── inc
│   │   │   ├── hal_av1d_api.h
│   │   │   ├── hal_avs2d_api.h
│   │   │   ├── hal_avsd_api.h
│   │   │   ├── hal_dec_task.h
│   │   │   ├── hal_dummy_dec_api.h
│   │   │   ├── hal_dummy_enc_api.h
│   │   │   ├── hal_enc_task.h
│   │   │   ├── hal_h263d_api.h
│   │   │   ├── hal_h264d_api.h
│   │   │   ├── hal_h264e_api_v2.h
│   │   │   ├── hal_h265d_api.h
│   │   │   ├── hal_h265e_api_v2.h
│   │   │   ├── hal_jpegd_api.h
│   │   │   ├── hal_jpege_api_v2.h
│   │   │   ├── hal_m2vd_api.h
│   │   │   ├── hal_mpg4d_api.h
│   │   │   ├── hal_task.h
│   │   │   ├── hal_vp8d_api.h
│   │   │   ├── hal_vp8e_api_v2.h
│   │   │   ├── hal_vp9d_api.h
│   │   │   ├── mpp_enc_hal.h
│   │   │   └── mpp_hal.h
│   │   ├── mpp_enc_hal.cpp
│   │   ├── mpp_hal.cpp
│   │   ├── rkdec
│   │   │   ├── avs2d
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_avs2d_api.c
│   │   │   │   ├── hal_avs2d_global.h
│   │   │   │   ├── hal_avs2d_rkv.c
│   │   │   │   ├── hal_avs2d_rkv.h
│   │   │   │   ├── hal_avs2d_vdpu382.c
│   │   │   │   └── hal_avs2d_vdpu382.h
│   │   │   ├── avsd
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_avsd_api.c
│   │   │   │   ├── hal_avsd_base.c
│   │   │   │   ├── hal_avsd_base.h
│   │   │   │   ├── hal_avsd_plus.c
│   │   │   │   ├── hal_avsd_plus.h
│   │   │   │   ├── hal_avsd_plus_reg.h
│   │   │   │   ├── hal_avsd_vdpu1.c
│   │   │   │   ├── hal_avsd_vdpu1.h
│   │   │   │   ├── hal_avsd_vdpu1_reg.h
│   │   │   │   ├── hal_avsd_vdpu2.c
│   │   │   │   ├── hal_avsd_vdpu2.h
│   │   │   │   └── hal_avsd_vdpu2_reg.h
│   │   │   ├── CMakeLists.txt
│   │   │   ├── h264d
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h264d_api.c
│   │   │   │   ├── hal_h264d_global.h
│   │   │   │   ├── hal_h264d_rkv_reg.c
│   │   │   │   ├── hal_h264d_rkv_reg.h
│   │   │   │   ├── hal_h264d_vdpu1.c
│   │   │   │   ├── hal_h264d_vdpu1.h
│   │   │   │   ├── hal_h264d_vdpu1_reg.h
│   │   │   │   ├── hal_h264d_vdpu2.c
│   │   │   │   ├── hal_h264d_vdpu2.h
│   │   │   │   ├── hal_h264d_vdpu2_reg.h
│   │   │   │   ├── hal_h264d_vdpu34x.c
│   │   │   │   ├── hal_h264d_vdpu34x.h
│   │   │   │   ├── hal_h264d_vdpu382.c
│   │   │   │   ├── hal_h264d_vdpu382.h
│   │   │   │   ├── hal_h264d_vdpu_com.c
│   │   │   │   └── hal_h264d_vdpu_com.h
│   │   │   ├── h265d
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h265d_api.c
│   │   │   │   ├── hal_h265d_com.c
│   │   │   │   ├── hal_h265d_com.h
│   │   │   │   ├── hal_h265d_ctx.h
│   │   │   │   ├── hal_h265d_debug.h
│   │   │   │   ├── hal_h265d_rkv.c
│   │   │   │   ├── hal_h265d_rkv.h
│   │   │   │   ├── hal_h265d_rkv_reg.h
│   │   │   │   ├── hal_h265d_vdpu34x.c
│   │   │   │   ├── hal_h265d_vdpu34x.h
│   │   │   │   ├── hal_h265d_vdpu382.c
│   │   │   │   └── hal_h265d_vdpu382.h
│   │   │   ├── inc
│   │   │   │   ├── vdpu34x_avs2d.h
│   │   │   │   ├── vdpu34x_com.h
│   │   │   │   ├── vdpu34x.h
│   │   │   │   ├── vdpu34x_h264d.h
│   │   │   │   ├── vdpu34x_h265d.h
│   │   │   │   ├── vdpu34x_vp9d.h
│   │   │   │   ├── vdpu382_avs2d.h
│   │   │   │   ├── vdpu382_com.h
│   │   │   │   ├── vdpu382.h
│   │   │   │   ├── vdpu382_h264d.h
│   │   │   │   ├── vdpu382_h265d.h
│   │   │   │   └── vdpu382_vp9d.h
│   │   │   ├── vdpu34x_com.c
│   │   │   ├── vdpu382_com.c
│   │   │   └── vp9d
│   │   │       ├── CMakeLists.txt
│   │   │       ├── hal_vp9d_api.c
│   │   │       ├── hal_vp9d_com.c
│   │   │       ├── hal_vp9d_com.h
│   │   │       ├── hal_vp9d_ctx.h
│   │   │       ├── hal_vp9d_debug.h
│   │   │       ├── hal_vp9d_rkv.c
│   │   │       ├── hal_vp9d_rkv.h
│   │   │       ├── hal_vp9d_rkv_reg.h
│   │   │       ├── hal_vp9d_vdpu34x.c
│   │   │       ├── hal_vp9d_vdpu34x.h
│   │   │       ├── hal_vp9d_vdpu382.c
│   │   │       └── hal_vp9d_vdpu382.h
│   │   ├── rkenc
│   │   │   ├── CMakeLists.txt
│   │   │   ├── common
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── rkv_enc_def.h
│   │   │   │   ├── vepu540c_common.c
│   │   │   │   ├── vepu540c_common.h
│   │   │   │   ├── vepu541_common.c
│   │   │   │   ├── vepu541_common.h
│   │   │   │   ├── vepu580_tune.h
│   │   │   │   ├── vepu5xx_common.c
│   │   │   │   ├── vepu5xx_common.h
│   │   │   │   └── vepu5xx.h
│   │   │   ├── h264e
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h264e_vepu540c.c
│   │   │   │   ├── hal_h264e_vepu540c.h
│   │   │   │   ├── hal_h264e_vepu540c_reg.h
│   │   │   │   ├── hal_h264e_vepu541.c
│   │   │   │   ├── hal_h264e_vepu541.h
│   │   │   │   ├── hal_h264e_vepu541_reg.h
│   │   │   │   ├── hal_h264e_vepu541_reg_l2.h
│   │   │   │   ├── hal_h264e_vepu580.c
│   │   │   │   ├── hal_h264e_vepu580.h
│   │   │   │   ├── hal_h264e_vepu580_reg.h
│   │   │   │   └── hal_h264e_vepu580_tune.c
│   │   │   ├── h265e
│   │   │   │   ├── CMakeLists.txt
│   │   │   │   ├── hal_h265e_vepu540c.c
│   │   │   │   ├── hal_h265e_vepu540c.h
│   │   │   │   ├── hal_h265e_vepu540c_reg.h
│   │   │   │   ├── hal_h265e_vepu541.c
│   │   │   │   ├── hal_h265e_vepu541.h
│   │   │   │   ├── hal_h265e_vepu541_reg.h
│   │   │   │   ├── hal_h265e_vepu54x_reg_l2.h
│   │   │   │   ├── hal_h265e_vepu580.c
│   │   │   │   ├── hal_h265e_vepu580.h
│   │   │   │   ├── hal_h265e_vepu580_reg.h
│   │   │   │   └── hal_h265e_vepu580_tune.c
│   │   │   └── jpege
│   │   │       ├── CMakeLists.txt
│   │   │       ├── hal_jpege_vepu540c.c
│   │   │       ├── hal_jpege_vepu540c.h
│   │   │       └── hal_jpege_vepu540c_reg.h
│   │   └── vpu
│   │       ├── av1d
│   │       │   ├── av1d_common.h
│   │       │   ├── CMakeLists.txt
│   │       │   ├── film_grain_noise_table.c
│   │       │   ├── film_grain_noise_table.h
│   │       │   ├── hal_av1d_api.c
│   │       │   ├── hal_av1d_common.h
│   │       │   ├── hal_av1d_vdpu.c
│   │       │   ├── hal_av1d_vdpu.h
│   │       │   └── hal_av1d_vdpu_reg.h
│   │       ├── CMakeLists.txt
│   │       ├── common
│   │       │   ├── CMakeLists.txt
│   │       │   ├── vepu_common.c
│   │       │   └── vepu_common.h
│   │       ├── h263d
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_h263d_api.c
│   │       │   ├── hal_h263d_base.h
│   │       │   ├── hal_h263d_vdpu1.c
│   │       │   ├── hal_h263d_vdpu1.h
│   │       │   ├── hal_h263d_vdpu1_reg.h
│   │       │   ├── hal_h263d_vdpu2.c
│   │       │   ├── hal_h263d_vdpu2.h
│   │       │   └── hal_h263d_vdpu2_reg.h
│   │       ├── h264e
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_h264e_vepu1_reg_tbl.h
│   │       │   ├── hal_h264e_vepu1_v2.c
│   │       │   ├── hal_h264e_vepu1_v2.h
│   │       │   ├── hal_h264e_vepu2_reg_tbl.h
│   │       │   ├── hal_h264e_vepu2_v2.c
│   │       │   ├── hal_h264e_vepu2_v2.h
│   │       │   ├── hal_h264e_vepu_v2.c
│   │       │   ├── hal_h264e_vepu_v2.h
│   │       │   ├── hal_h264e_vpu_tbl.c
│   │       │   ├── hal_h264e_vpu_tbl.h
│   │       │   └── hal_h264e_vpu_tbl_v2.h
│   │       ├── jpegd
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_jpegd_api.c
│   │       │   ├── hal_jpegd_base.h
│   │       │   ├── hal_jpegd_common.c
│   │       │   ├── hal_jpegd_common.h
│   │       │   ├── hal_jpegd_rkv.c
│   │       │   ├── hal_jpegd_rkv.h
│   │       │   ├── hal_jpegd_rkv_reg.h
│   │       │   ├── hal_jpegd_vdpu1.c
│   │       │   ├── hal_jpegd_vdpu1.h
│   │       │   ├── hal_jpegd_vdpu1_reg.h
│   │       │   ├── hal_jpegd_vdpu2.c
│   │       │   ├── hal_jpegd_vdpu2.h
│   │       │   └── hal_jpegd_vdpu2_reg.h
│   │       ├── jpege
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_jpege_base.c
│   │       │   ├── hal_jpege_base.h
│   │       │   ├── hal_jpege_vepu1_v2.c
│   │       │   ├── hal_jpege_vepu1_v2.h
│   │       │   ├── hal_jpege_vepu2_v2.c
│   │       │   └── hal_jpege_vepu2_v2.h
│   │       ├── m2vd
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_m2vd_api.c
│   │       │   ├── hal_m2vd_base.h
│   │       │   ├── hal_m2vd_vdpu1.c
│   │       │   ├── hal_m2vd_vdpu1_reg.h
│   │       │   ├── hal_m2vd_vdpu2.c
│   │       │   ├── hal_m2vd_vdpu2_reg.h
│   │       │   ├── hal_m2vd_vpu1.h
│   │       │   └── hal_m2vd_vpu2.h
│   │       ├── mpg4d
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_m4vd_api.c
│   │       │   ├── hal_m4vd_com.c
│   │       │   ├── hal_m4vd_com.h
│   │       │   ├── hal_m4vd_vdpu1.c
│   │       │   ├── hal_m4vd_vdpu1.h
│   │       │   ├── hal_m4vd_vdpu1_reg.h
│   │       │   ├── hal_m4vd_vdpu2.c
│   │       │   ├── hal_m4vd_vdpu2.h
│   │       │   └── hal_m4vd_vdpu2_reg.h
│   │       ├── vp8d
│   │       │   ├── CMakeLists.txt
│   │       │   ├── hal_vp8d_api.c
│   │       │   ├── hal_vp8d_base.h
│   │       │   ├── hal_vp8d_vdpu1.c
│   │       │   ├── hal_vp8d_vdpu1.h
│   │       │   ├── hal_vp8d_vdpu1_reg.h
│   │       │   ├── hal_vp8d_vdpu2.c
│   │       │   ├── hal_vp8d_vdpu2.h
│   │       │   └── hal_vp8d_vdpu2_reg.h
│   │       └── vp8e
│   │           ├── CMakeLists.txt
│   │           ├── hal_vp8e_api_v2.c
│   │           ├── hal_vp8e_base.c
│   │           ├── hal_vp8e_base.h
│   │           ├── hal_vp8e_debug.h
│   │           ├── hal_vp8e_entropy.c
│   │           ├── hal_vp8e_entropy.h
│   │           ├── hal_vp8e_putbit.c
│   │           ├── hal_vp8e_putbit.h
│   │           ├── hal_vp8e_table.c
│   │           ├── hal_vp8e_table.h
│   │           ├── hal_vp8e_vepu1_reg.h
│   │           ├── hal_vp8e_vepu1_v2.c
│   │           ├── hal_vp8e_vepu1_v2.h
│   │           ├── hal_vp8e_vepu2_reg.h
│   │           ├── hal_vp8e_vepu2_v2.c
│   │           └── hal_vp8e_vepu2_v2.h
│   ├── inc
│   │   ├── mpi_impl.h
│   │   ├── mpp_cfg.h
│   │   ├── mpp_dec_cfg.h
│   │   ├── mpp_enc_cfg.h
│   │   ├── mpp.h
│   │   ├── mpp_impl.h
│   │   └── mpp_info.h
│   ├── legacy
│   │   ├── CMakeLists.txt
│   │   ├── ppOp.cpp
│   │   ├── ppOp.h
│   │   ├── rk_list.cpp
│   │   ├── rk_list.h
│   │   ├── vpu_api.cpp
│   │   ├── vpu_api_legacy.cpp
│   │   ├── vpu_api_legacy.h
│   │   ├── vpu_api_mlvec.cpp
│   │   ├── vpu_api_mlvec.h
│   │   ├── vpu.c
│   │   ├── vpu_mem_legacy.c
│   │   └── vpu_mem_legacy.h
│   ├── mpi.cpp
│   ├── mpp.cpp
│   ├── mpp_impl.cpp
│   ├── mpp_info.cpp
│   ├── vproc
│   │   ├── CMakeLists.txt
│   │   ├── iep
│   │   │   ├── CMakeLists.txt
│   │   │   ├── iep.cpp
│   │   │   ├── iep.h
│   │   │   └── test
│   │   │       ├── CMakeLists.txt
│   │   │       ├── iep_dei.cfg
│   │   │       └── iep_test.cpp
│   │   ├── iep2
│   │   │   ├── CMakeLists.txt
│   │   │   ├── iep2.c
│   │   │   ├── iep2_ff.c
│   │   │   ├── iep2_ff.h
│   │   │   ├── iep2_gmv.c
│   │   │   ├── iep2_gmv.h
│   │   │   ├── iep2.h
│   │   │   ├── iep2_osd.c
│   │   │   ├── iep2_osd.h
│   │   │   ├── iep2_pd.c
│   │   │   ├── iep2_pd.h
│   │   │   ├── iep2_roi.c
│   │   │   ├── iep2_roi.h
│   │   │   └── test
│   │   │       ├── CMakeLists.txt
│   │   │       └── iep2_test.c
│   │   ├── inc
│   │   │   ├── iep2_api.h
│   │   │   ├── iep_api.h
│   │   │   ├── iep_common.h
│   │   │   ├── mpp_dec_vproc.h
│   │   │   └── rga_api.h
│   │   ├── mpp_dec_vproc.cpp
│   │   ├── mpp_vproc_dev.cpp
│   │   └── rga
│   │       ├── CMakeLists.txt
│   │       ├── rga.cpp
│   │       ├── rga.h
│   │       └── test
│   │           ├── CMakeLists.txt
│   │           └── rga_test.cpp
│   └── vproc.cmake
├── osal
│   ├── allocator
│   │   ├── allocator_dma_heap.c
│   │   ├── allocator_dma_heap.h
│   │   ├── allocator_drm.c
│   │   ├── allocator_drm.h
│   │   ├── allocator_ext_dma.c
│   │   ├── allocator_ext_dma.h
│   │   ├── allocator_ion.c
│   │   ├── allocator_ion.h
│   │   ├── allocator_std.c
│   │   ├── allocator_std.h
│   │   └── ion.h
│   ├── android
│   │   ├── os_allocator.c
│   │   ├── os_env.c
│   │   ├── os_log.c
│   │   └── os_mem.c
│   ├── CMakeLists.txt
│   ├── driver
│   │   ├── inc
│   │   │   ├── mpp_device_debug.h
│   │   │   └── mpp_service_impl.h
│   │   ├── mpp_device.c
│   │   ├── mpp_server.cpp
│   │   ├── mpp_service.c
│   │   └── vcodec_service.c
│   ├── inc
│   │   ├── mpp_allocator.h
│   │   ├── mpp_callback.h
│   │   ├── mpp_common.h
│   │   ├── mpp_compat_impl.h
│   │   ├── mpp_debug.h
│   │   ├── mpp_dev_defs.h
│   │   ├── mpp_device.h
│   │   ├── mpp_env.h
│   │   ├── mpp_eventfd.h
│   │   ├── mpp_hash.h
│   │   ├── mpp_list.h
│   │   ├── mpp_lock.h
│   │   ├── mpp_mem.h
│   │   ├── mpp_mem_pool.h
│   │   ├── mpp_platform.h
│   │   ├── mpp_queue.h
│   │   ├── mpp_runtime.h
│   │   ├── mpp_server.h
│   │   ├── mpp_service_api.h
│   │   ├── mpp_service.h
│   │   ├── mpp_soc.h
│   │   ├── mpp_thread.h
│   │   ├── mpp_time.h
│   │   ├── mpp_trace.h
│   │   ├── osal_2str.h
│   │   ├── vcodec_service_api.h
│   │   └── vcodec_service.h
│   ├── linux
│   │   ├── drm.h
│   │   ├── drm_mode.h
│   │   ├── os_allocator.c
│   │   ├── os_env.c
│   │   ├── os_log.cpp
│   │   └── os_mem.c
│   ├── mpp_allocator.cpp
│   ├── mpp_allocator_impl.h
│   ├── mpp_callback.cpp
│   ├── mpp_common.cpp
│   ├── mpp_compat.cpp
│   ├── mpp_env.cpp
│   ├── mpp_eventfd.cpp
│   ├── mpp_list.cpp
│   ├── mpp_lock.cpp
│   ├── mpp_log.cpp
│   ├── mpp_mem.cpp
│   ├── mpp_mem_pool.cpp
│   ├── mpp_platform.cpp
│   ├── mpp_queue.cpp
│   ├── mpp_runtime.cpp
│   ├── mpp_soc.cpp
│   ├── mpp_thread.cpp
│   ├── mpp_time.cpp
│   ├── mpp_trace.cpp
│   ├── osal_2str.c
│   ├── os_allocator.h
│   ├── os_env.h
│   ├── os_log.h
│   ├── os_mem.h
│   ├── test
│   │   ├── CMakeLists.txt
│   │   ├── mpp_env_test.c
│   │   ├── mpp_eventfd_test.c
│   │   ├── mpp_log_test.c
│   │   ├── mpp_mem_pool_test.c
│   │   ├── mpp_mem_test.c
│   │   ├── mpp_platform_test.c
│   │   ├── mpp_runtime_test.c
│   │   ├── mpp_thread_test.c
│   │   ├── mpp_time_test.c
│   │   └── mpp_trace_test.c
│   └── windows
│       ├── os_allocator.c
│       ├── os_env.c
│       ├── os_log.c
│       ├── os_mem.c
│       ├── pthread
│       │   ├── dll
│       │   │   ├── x64
│       │   │   │   ├── pthreadGC2.dll
│       │   │   │   └── pthreadVC2.dll
│       │   │   └── x86
│       │   │       ├── pthreadGC2.dll
│       │   │       ├── pthreadGCE2.dll
│       │   │       ├── pthreadVC2.dll
│       │   │       ├── pthreadVCE2.dll
│       │   │       └── pthreadVSE2.dll
│       │   ├── inc
│       │   │   ├── pthread.h
│       │   │   ├── sched.h
│       │   │   └── semaphore.h
│       │   └── lib
│       │       ├── x64
│       │       │   └── pthreadVC2.lib
│       │       └── x86
│       │           ├── pthreadVC2.lib
│       │           ├── pthreadVCE2.lib
│       │           └── pthreadVSE2.lib
│       └── stdint.h
├── pkgconfig
│   ├── rockchip_mpp.pc.cmake
│   └── rockchip_vpu.pc.cmake
├── readme.txt
├── test
│   ├── CMakeLists.txt
│   ├── mpi_dec_mt_test.c
│   ├── mpi_dec_multi_test.c
│   ├── mpi_dec_nt_test.c
│   ├── mpi_dec_test.c
│   ├── mpi_enc_mt_test.cpp
│   ├── mpi_enc_test.c
│   ├── mpi_rc2_test.c
│   ├── mpi_rc.cfg
│   ├── mpp_event_trigger.c
│   ├── mpp_event_trigger.h
│   ├── mpp_info_test.c
│   ├── mpp_parse_cfg.c
│   ├── mpp_parse_cfg.h
│   ├── README.md
│   └── vpu_api_test.c
├── tools
│   ├── astyle
│   ├── AStyle.exe
│   ├── astylerc
│   ├── hooks
│   │   └── pre-commit
│   ├── mpp_astyle.bat
│   ├── mpp_astyle.sh
│   ├── mpp_doxyfile
│   ├── TextEncoding.exe
│   └── yuvplay
└── utils
    ├── camera_source.c
    ├── camera_source.h
    ├── CMakeLists.txt
    ├── dictionary.c
    ├── dictionary.h
    ├── iniparser.c
    ├── iniparser.h
    ├── mpi_dec_utils.c
    ├── mpi_dec_utils.h
    ├── mpi_enc_utils.c
    ├── mpi_enc_utils.h
    ├── mpp_enc_roi_utils.c
    ├── mpp_enc_roi_utils.h
    ├── mpp_opt.c
    ├── mpp_opt.h
    ├── utils.c
    └── utils.h

111 directories, 820 files

3.开始编译

我们挂载进入mpp-develop下的build/linux/aarch64/文件目录里面

cd ./mpp-develop/build/linux/aarch64/

我们会看到这样绿色的字体
在这里插入图片描述
虽然说官方的Make文件写的不太标准但是能运行就够了,接下来执行命令

./make-Makefiles.bash

香橙派Pi5基于Qt5视频硬编码编译_第1张图片

4.编译MPI环境

在上一次操作后输入命令,一般香橙派官方下载的系统版本都不会报错,如果是ubuntu上下载的系统版本有可能会报错

sudo make -j4

编译完成
香橙派Pi5基于Qt5视频硬编码编译_第2张图片

5.执行安装MPI环境

在上一部操作后,执行此步骤。

sudo make install

这里说一下为什么要执行install的操作,因为很多人的习惯是make完了之后就觉得可以使用编译后的函数库了,其实上我们的函数库并没有编译到我们的/usr目录下也就是说我们需要在编译的目录下找到我们的编译项目才可以更方便导入函数,但是install这个步骤包含make的过程和将函数库、动态库和静态库安装到/usr的过程,但是这个速度太慢也就是等同于make -j1的速度,这也就是我们前面为什么会执行make -j4利用多线程编译更快一些,之后再执行install速度就会很快。

安装完成
香橙派Pi5基于Qt5视频硬编码编译_第3张图片
我们看到我们的函数库确实被安装到我们的/usr目录下面去了

6.执行安装MPP环境

1.我们在执行了MPI接口安装后会发现我们的MPP接口并没有完全编译到我们的/usr文件目录下面去,一些内存拷贝的函数还在我们的mpp_develop目录下,我们知道MPI接口是针对的是ffmpeg和gstreameer等推流媒体工具使用的,但是没有MPP接口情况下内存拷贝实属不易,所以我们手动把MPP接口完善到/usr目录下

2.MPP缺少的部分是mpp_devlop目录下的osal文件夹内的所有函数

复制osal到/usr下:

sudo cp -r ./mpp-develop/osal /usr/local/include/rockchip/

至此我们的MPI和MPP安装完成

三、安装Qt

我用的系统是Ubuntu22.04的系统但是这个系统的qt5-default安装
已经失效了,在新版ubuntu安装Qt方法如下:

sudo apt install qtbase5-dev qt5-qmake qtcreator

之后在/usr目录下查找qmake的文件具体位置,之后配置qtcreator里面的kits就行了,如图的Qt Version的选项,配置好了之后会有具体版本号和qmake具体路径出现
香橙派Pi5基于Qt5视频硬编码编译_第4张图片

四、Qt项目配置RKMpp和RKMpi

我们新建一个qt工程是不是GUI工程无所谓都可以配置
我这里放出我的.pro、.pri文件和依赖文件的配置

1.导入依赖文件

我把mpp编译后.a的依赖文件分类统一放在了一个文件夹内,虽然说有很多没有用到以后有需要可以方便扩展,这里是我依赖文件夹的libs文件目录:

libs
├── mpp
│   ├── base
│   │   └── libmpp_base.a
│   ├── codec
│   │   ├── dec
│   │   │   ├── av1
│   │   │   │   └── libcodec_av1d.a
│   │   │   ├── avs
│   │   │   │   └── libcodec_avs2d.a
│   │   │   ├── avs2
│   │   │   │   └── libcodec_avsd.a
│   │   │   ├── dummy
│   │   │   │   └── libcodec_dummy_dec.a
│   │   │   ├── h263
│   │   │   │   └── libcodec_h263d.a
│   │   │   ├── h264
│   │   │   │   └── libcodec_h264d.a
│   │   │   ├── h265
│   │   │   │   └── libcodec_h265d.a
│   │   │   ├── jpeg
│   │   │   │   └── libcodec_jpegd.a
│   │   │   ├── m2v
│   │   │   │   └── libcodec_mpeg2d.a
│   │   │   ├── mpg4
│   │   │   │   └── libcodec_mpeg4d.a
│   │   │   ├── vp8
│   │   │   │   └── libcodec_vp8d.a
│   │   │   └── vp9
│   │   │       └── libcodec_vp9d.a
│   │   ├── enc
│   │   │   ├── dummy
│   │   │   │   └── libcodec_dummy_enc.a
│   │   │   ├── h264
│   │   │   │   └── libcodec_h264e.a
│   │   │   ├── h265
│   │   │   │   └── libcodec_h265e.a
│   │   │   ├── jpeg
│   │   │   │   └── libcodec_jpege.a
│   │   │   └── vp8
│   │   │       └── libcodec_vp8e.a
│   │   ├── libmpp_codec.a
│   │   ├── libmpp_rc.a
│   │   └── rc
│   │       └── libenc_rc.a
│   ├── hal
│   │   ├── common
│   │   │   ├── h264
│   │   │   ├── h265
│   │   │   ├── jpeg
│   │   │   │   └── libhal_jpege.a
│   │   │   └── libhal_common.a
│   │   ├── dummy
│   │   │   └── libhal_dummy.a
│   │   ├── libmpp_hal.a
│   │   ├── rkdec
│   │   │   ├── avs2d
│   │   │   │   └── libhal_avs2d.a
│   │   │   ├── avsd
│   │   │   │   └── libhal_avsd.a
│   │   │   ├── h264d
│   │   │   │   └── libhal_h264d.a
│   │   │   ├── h265d
│   │   │   │   └── libhal_h265d.a
│   │   │   ├── libvdpu34x_com.a
│   │   │   └── vp9d
│   │   │       └── libhal_vp9d.a
│   │   ├── rkenc
│   │   │   ├── common
│   │   │   │   └── libhal_vepu541_common.a
│   │   │   ├── h264e
│   │   │   │   ├── libhal_h264e.a
│   │   │   │   └── libhal_h264e_rkv.a
│   │   │   ├── h265e
│   │   │   │   ├── libhal_h265e.a
│   │   │   │   └── libhal_h265e_vepu541.a
│   │   │   └── jpege
│   │   │       └── libhal_jpege_rkv.a
│   │   └── vpu
│   │       ├── av1d
│   │       │   └── libhal_av1d.a
│   │       ├── common
│   │       │   └── libhal_vepu_common.a
│   │       ├── h263d
│   │       │   └── libhal_h263d.a
│   │       ├── h264e
│   │       │   └── libhal_h264e_vpu.a
│   │       ├── jpegd
│   │       │   └── libhal_jpegd.a
│   │       ├── jpege
│   │       │   └── libhal_jpege_vpu.a
│   │       ├── m2vd
│   │       │   └── libhal_mpeg2d.a
│   │       ├── mpg4d
│   │       │   └── libhal_mpeg4d.a
│   │       ├── vp8d
│   │       │   └── libhal_vp8d.a
│   │       └── vp8e
│   │           └── libhal_vp8e.a
│   └── vproc
│       ├── iep
│       │   └── libvproc_iep.a
│       ├── iep2
│       │   └── libvproc_iep2.a
│       ├── libmpp_vproc.a
│       └── rga
│           └── libvproc_rga.a
├── osal
│   └── libosal.a
└── utils
    └── libutils.a

57 directories, 53 files

① 通过项目导入

我们右键选择我们的项目
香橙派Pi5基于Qt5视频硬编码编译_第5张图片

② 导入外部依赖

香橙派Pi5基于Qt5视频硬编码编译_第6张图片

③ 选择依赖

只选择Linux外部依赖就行其他系统不用勾选,之后点击Browse就可以了导入了
香橙派Pi5基于Qt5视频硬编码编译_第7张图片

④ 依赖管理

很显然我们的主工程文件.pro是可以不需要依赖的,因为Qt外部依赖只能导入到.pro文件中去,我们希望把依赖文件放到.pri文件中去

复制这一段配置代码粘贴到我们指定的.pri下:
香橙派Pi5基于Qt5视频硬编码编译_第8张图片

2.配置.pro文件

#如果是gui工程请把-换成+
QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
        main.cpp

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

HEADERS +=

#这里是pri文件,所有的类和接口都在里面方便项目管理
include(./encoder/encoder.pri)
include(./V4L2/V4L2.pri)

3.配置.pri文件

我的编码管理的模块叫encoder.pri,也可以右键单击工程导入外部依赖,我这里导入的外部依赖只有两个一个是libosal.a一个是libutils.a,pri文件的内容:

HEADERS += \
    $$PWD/encoder.h

SOURCES += \
    $$PWD/encoder.cpp

#载入MPP和MPI的库
INCLUDEPATH=/usr/local/include/rockchip/ \
            /usr/local/include/rockchip/ \
            /usr/local/include/rockchip/osal \
            /usr/local/include/rockchip/osal/inc
#载入MPP和MPI的依赖文件
unix:!macx: LIBS += -L$$PWD/../libs/osal/ -losal

INCLUDEPATH += $$PWD/../libs/osal
DEPENDPATH += $$PWD/../libs/osal

unix:!macx: PRE_TARGETDEPS += $$PWD/../libs/osal/libosal.a

unix:!macx: LIBS += -L$$PWD/../libs/utils/ -lutils

INCLUDEPATH += $$PWD/../libs/utils
DEPENDPATH += $$PWD/../libs/utils

unix:!macx: PRE_TARGETDEPS += $$PWD/../libs/utils/libutils.a

4.测试代码

在encoder.pri代码如下:
香橙派Pi5基于Qt5视频硬编码编译_第9张图片
在main.cpp中引用encoder函数
香橙派Pi5基于Qt5视频硬编码编译_第10张图片

5.运行代码看看效果

编译通过,效果如下:
香橙派Pi5基于Qt5视频硬编码编译_第11张图片


总结

经过官方代码的测试在开启图形界面下最高可以达到8k30fps 左右的H265编码,如果关掉图形界面估计还可以更高,网上也有人说需要对RK3588锁频可以提高其gpu性能,不过我还没试过,有感兴趣的可以去试试。

你可能感兴趣的:(香橙派,qt,qt,开发语言)