目标
本次实验是将rk3568开发板中的MP4和h264文件用以rtsp的方式进行推流,笔记本用vlc进行拉流。
交叉编译openssl
ZLMediaKit的编译依赖openssl,因此,我们要首先编译openssl。
ffpmeg也要编译,但是我之前编译过,这里我就不做介绍了,大家看看其他博主的分享吧。
我用的版本是openssl-1.1.1,大家可以根据自己想需要自行下载其它版本:
1、解压openssl-1.1.g.tar.gz:
tar zxvf openssl-1.1.1.tar.gz
2、进入openssl-1.1.g文件:
cd openssl-1.1.g
3、创建 _install文件夹
mkdir _install
4、开始编译
./Configure linux-aarch64 no-asm shared no-async --prefix=/home/l/opt/tool/openssl-1.1.1f/_install --cross-compile-prefix=aarch64-buildroot-linux-gnu-
make && make install
注意:安装路径设置为自己的路径
交叉编译ZLMediaKit
按照官方文档下载源码
# 国内用户推荐从 Gitee 下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 初始化子模块 (必须执行)
git submodule update --init
编译:
mkdir build
cd build
cmake -D CMAKE_C_COMPILER=/home/l/opt/itop_rk3568_linux/rk356x_linux/buildroot/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-gcc -D CMAKE_CXX_COMPILER=/home/l/opt/itop_rk3568_linux/rk356x_linux/buildroot/output/rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu-g++ -DOPENSSL_ROOT_DIR=/home/l/opt/tool/openssl-1.1.1f/_install -DOPENSSL_LIBRARIES=/home/l/opt/tool/openssl-1.1.1f/_install/lib ..
make -j4
注意:这里cmake的时候要将openssl的目录以及库添加进来
编译好后,生成的可执行文件存放在 ZLMediaKit/release/linux/Debug
本次测试需要将三个文件导入到板子中:
libmk_api.so:推流程序所以来的库
MediaServer:对MP4文件进行推流
apt_tester_h264_media_server:对h264文件进行推流
对MP4文件推流
确保板子里面有MP4格式的视频文件,我进行演示的文件只有视频没有音频,如果播音频有问题,可以去上面我提供的官网有指令。
运行:
# 通过 -h 可以了解启动参数
./MediaServer -h
# 以守护进程模式启动
./MediaServer -d &
#开始推流
ffmpeg -re -stream_loop -1 -i 720x576_v3.mp4 -vcodec copy -acodec copy -f rtsp -rtsp_transport tcp rtsp://192.168.1.166:554/live/camera
注意:MP4文件和推流地址,大家根据自己的需求自行更改即可,ip是板子里面有线ip地址
vlc拉流:
对h264文件推流
确保板子里面有h264格式的视频文件,我进行演示的文件只有视频没有音频,如果播音频有问题,可以看上一个推流说明。
我没有更改源码,发现apt_tester_h264_media_server.c的源码,发现运行过程中有段错误,因此对源码做了更改,如下。
运行:
./api_tester_h264_media_server /app_save/sun/mpp/720x576_v2.h264
拉流地址为:
rtsp://192.168.1.166:554/live/test
流的地址在代码里面写的有,想更改的话,修改代码即可。
注意:ip是板子里面有线ip地址
vlc拉流:
参考:
基于Linux下openssl交叉编译详解_linux openssl交叉编译-CSDN博客