RK3568笔记十:Zlmediakit交叉编译

若该文为原创文章,转载请注明原文出处。

编译Zlmediakit的主要目的是想实现在RK3568拉取多路RTPS流,并通过MPP硬解码,DRM显示出来。为了实现拉取多路流选择了Zlmediakit,使用FFMEPG也可以,在RV1126上已经验证了可行性。

一、环境

1、移植平台:rk3568

2、开发板:ATK-RK3568正点原子板子

3、环境:buildroot

使用的是正点原子团队提供的虚拟机,通过了解没有提供ubuntu固件,所以增加了难度。

二、介绍

ZLMediaKit是一套高性能的流媒体服务框架,目前支持rtmp、rtsp、hls、http-flv等流媒体协议,支持linux、macos、windows三大PC平台和ios、android两大移动端平台。

类似于live555的工具,可以用来实现rtsp服务器的功能,且提供c 版本的api,使用起来十分简单,很容易上手。

进行交叉编译,需要修改两个地方,一个是指定编译工具链,还有一个是指定已经交叉编译过的openssl库。

三、编译libssl

tar zfvx openssl-1.1-fit.tar.gz
cd openssl-1.1-fit
export CC=/opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc

./Configure linux-generic32 --prefix=/home/alientek/Download/openssl-1.1-fit/arm_libssl

make -j2 
make install

进入arm_libssl目录,拷贝编译后的库的到工具链下

cd /home/alientek/Download/openssl-1.1-fit/arm_libssl

cp lib* /opt/atk-dlrk356x-toolchain/lib

四、Zlmediakit编译

1、下载

#国内用户推荐从同步镜像网站gitee下载  

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit 

cd ZLMediaKit

 #千万不要忘记执行这句命令 

git submodule update --init

2、创建cmake编译文件

在命令行执行以下命令,CMAKE_SYSTEM_NAME设置系统平台,CMAKE_SYSTEM_PROCESSOR设置处理器架构为aarch64,CMAKE_STAGING_PREFIX为安装路径,CMAKE_C_COMPILER设置gcc工具链位置,CMAKE_CXX_COMPILER设置g++工具链的位置。cat /tmp/toolchain.cmake查看是否写入。

cat > /tmp/toolchain.cmake <<'EOT'
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR aarch64)
set(CMAKE_STAGING_PREFIX /home/alientek/Download/ZLMediaKit/ZLinstall)
set(CMAKE_C_COMPILER /opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER /opt/atk-dlrk356x-toolchain/usr/bin/aarch64-buildroot-linux-gnu-g++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
EOT

3、cmake配置

mkdir build_arm
cd build_arm

cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/toolchain.cmake -DCMAKE_INSTALL_PREFIX=/opt/atk-dlrk356x-toolchain/lib -DOPENSSL_ROOT_DIR=/opt/atk-dlrk356x-toolchain -DCMAKE_INSTALL_PREFIX=/home/alientek/Download/ZLMediaKit/ZLinstall ..

4、编译安装

编译

make

安装

make install

生成完后的ZLinstall目录文件如下:

五、测试

在板子上运行

因为是静态库编译的,只需把MediaServer这个bin文件拷贝到板子上即可。

在板子上运行MediaServer,运行出错,原因是已经被绑定了,但説明交叉编译正常。

至此Zlmediakit编译完成,为实现类似NVR功能做铺垫。

在RK3568的SDK里,在rknpu2里也有编译好的libmk_api.so文件,可以直接使用

参考资料,感谢大佬:

参考:ARM平台移植ZLMediaKit_zlmediakit arm64-CSDN博客

移植ZLMediaKit 工具到 Hi3516DV500 平台专栏易百纳技术社区 (ebaina.com)

如有侵权,或需要完整代码,请及时联系博主。

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-01-23 01:50:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-23 01:50:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-23 01:50:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-23 01:50:02       18 阅读

热门阅读

  1. Python安装wxpython

    2024-01-23 01:50:02       25 阅读
  2. 「优选算法刷题」:长度最小的子数组

    2024-01-23 01:50:02       30 阅读
  3. 常用的正则表达式1

    2024-01-23 01:50:02       31 阅读
  4. Webpack5入门到原理17:Loader 原理

    2024-01-23 01:50:02       34 阅读
  5. Go 语言实现快速排序算法的简单示例

    2024-01-23 01:50:02       41 阅读
  6. 限制大语言模型的天花板是什么

    2024-01-23 01:50:02       29 阅读
  7. 【0246】深入分析PG内核Write-Ahead Log的实现机制

    2024-01-23 01:50:02       32 阅读
  8. 力扣208题:实现Tire(前缀树)

    2024-01-23 01:50:02       36 阅读
  9. Leetcode 3011. Find if Array Can Be Sorted

    2024-01-23 01:50:02       29 阅读
  10. docker下安装rabbitmq

    2024-01-23 01:50:02       36 阅读