rk3588/rk356x/rv1109/rv1126 live555移植+mpp编译 rtsp拉流

这篇具有很好参考价值的文章主要介绍了rk3588/rk356x/rv1109/rv1126 live555移植+mpp编译 rtsp拉流。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要是为了记录一下rk板子的踩坑日记。
项目主要是rk3588 rtsp拉流。

mpp编译

1.下载MPP源码:https://github.com/rockchip-linux/mpp
2.rk3588/rk356x的板子进入Mpp源码目录mpp/build/linux/aarch64(rk3588/rk356x是64位板子)中,修改arm.linux.cross.cmake文件中的配置

cmake_minimum_required( VERSION 2.6.3 )

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc")
SET(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++")
#SET(CMAKE_SYSTEM_PROCESSOR "armv7-a")
SET(CMAKE_SYSTEM_PROCESSOR "armv8-a")

add_definitions(-fPIC)
add_definitions(-DARMLINUX)
add_definitions(-Dlinux)

修改make-Makefiles.bash的配置,主要改MPP_TOOLCHAIN编译链(rk3588/rk356x的交叉编译链)

#!/bin/bash
# Run this from within a bash shell
set +e
MPP_PWD=`pwd`
MPP_TOP=${MPP_PWD}/../../..
# toolchain detection
check_cmd(){
    "$@" >> /dev/null 2>&1
}
check_system_arm_linux_gcc(){
    check_cmd aarch64-linux-gnu-gcc -v
}
check_system_arm_linux_gcc
if [ $? -eq 127 ];then
    #MPP_TOOLCHAIN=/usr/bin
    MPP_TOOLCHAIN=~/3gi/software/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
    export PATH=$PATH:${MPP_TOOLCHAIN}
fi
# generate Makefile
cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_TOOLCHAIN_FILE=./arm.linux.cross.cmake \
      -DHAVE_DRM=ON \
      -G "Unix Makefiles" \
      ${MPP_TOP}

rv1109/1126是32位系统,则进入mpp/build/linux/arm,修改配置的如下:

cmake_minimum_required( VERSION 2.6.3 )
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc")
SET(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++")
SET(CMAKE_SYSTEM_PROCESSOR "armv7-a_hardfp")
add_definitions(-fPIC)
add_definitions(-DARMLINUX)
add_definitions(-D__gnu_linux__)
#!/bin/bash
# Run this from within a bash shell
set +e
MPP_PWD=`pwd`
MPP_TOP=${MPP_PWD}/../../..
# toolchain detection
check_cmd(){
    "$@" >> /dev/null 2>&1
}
check_system_arm_linux_gcc(){
    check_cmd arm-linux-gcc -v
}
check_system_arm_linux_gcc
if [ $? -eq 127 ];then
    #MPP_TOOLCHAIN=${MPP_TOP}/../prebuilts/toolschain/usr/bin
    MPP_TOOLCHAIN=~/3gi/software/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin
    export PATH=$PATH:${MPP_TOOLCHAIN}
fi
# generate Makefile
cmake -DCMAKE_BUILD_TYPE=Release \
      -DCMAKE_TOOLCHAIN_FILE=./arm.linux.cross.cmake \
      -DHAVE_DRM=ON \
      -G "Unix Makefiles" \
      ${MPP_TOP}
  1. 执行 ./make-Makefiles.bash 后脚本会把需要文件都拷贝到该目录下,再执行 make命令就可以生成so文件和可执行文件,如果想要生成库的形式让别的程序调用可以按照如下的命令:
./make-Makefiles.bash
make 
export DESTDIR=./install
make install

执行上述命令后就可以在该目录的install文件夹下生成如下文件:
rk3588/rk356x/rv1109/rv1126 live555移植+mpp编译 rtsp拉流
然后就可以让别的程序调用它了。
4.如果想在板子上执行生成的应用程序,要把这些执行文件和so文件都adb push 到板端上,然后执行应用程序,比如
./mpi_dec_test -t 7 -i BarbieGirl.h264 -n 10
就会看到如下打印(我是在rk3588上执行的)
rk3588/rk356x/rv1109/rv1126 live555移植+mpp编译 rtsp拉流
如果没有打印信息,可能新版mpp程序把打印接口改为系统log,可以在板端另外开一个命令行使用命令tail -10f /var/log/messages,也可以看到打印信息

编译live555

  1. 下载live555源码: http://www.live555.com/liveMedia/public/
  2. 进入源码目录,新增config.rk3588(根据个人编译器指定内容),内容如下:
CROSS_COMPILE?=         /home/software/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
COMPILE_OPTS =          $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -DNO_SSTREAM=1 -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DNO_OPENSSL=1 -DLOCALE_NOT_USED -DDEBUG
C =                     c
C_COMPILER =            $(CROSS_COMPILE)gcc
C_FLAGS =               $(COMPILE_OPTS)
CPP =                   cpp
CPLUSPLUS_COMPILER =    $(CROSS_COMPILE)g++
CPLUSPLUS_FLAGS =       $(COMPILE_OPTS) -Wall -DBSD=1
OBJ =                   o
LINK =                  $(CROSS_COMPILE)g++ -o
LINK_OPTS =
CONSOLE_LINK_OPTS =     $(LINK_OPTS)
LIBRARY_LINK =          $(CROSS_COMPILE)ar cr 
LIBRARY_LINK_OPTS =     $(LINK_OPTS)
LIB_SUFFIX =                    a
LIBS_FOR_GUI_APPLICATION =
EXE =
PREFIX =                /home/test/rtsp/live/live555_install

CROSS_COMPILE为自己的编译链,PREFIX为自己想要生成的安装路径,安装路径可以随意改。
3.运行genMakefiles生成makefile,根据后缀名匹配对应的config文件,命令如下:

./genMakefiles rk3588

4.执行make命令,再执行make install,就可以生成静态库和头文件让别的工程引用它了

tree
.
├── bin
├── include
│   ├── BasicUsageEnvironment 
│   ├── groupsock
│   ├── liveMedia
│   └── UsageEnvironment
└── lib
    ├── libBasicUsageEnvironment.a
    ├── libgroupsock.a
    ├── libliveMedia.a
    └── libUsageEnvironment.a

引用时要注意这4个库的引用顺序,顺序不对会报错


target_link_libraries(${PROJECT_NAME}  
        ${LIVE_PATH}/libliveMedia.so
        ${LIVE_PATH}/libBasicUsageEnvironment.so
        ${LIVE_PATH}/libgroupsock.so
        ${LIVE_PATH}/libUsageEnvironment.so
        rockchip_mpp
        utils
        ${RK_DRM_LIB}
        pthread
        rga
        )

如果想实现rk3588的拉流,可以参考以下链接:
Liunx_mpp :
https://github.com/WainDing/mpp_linux_cpp
https://github.com/MUZLATAN/ffmpeg_rtsp_mpp
mpp的运行可以参考官方文档的mpi_dec_test.c、mpi_dec_mt_test.c、mpi_dec_multi_test.c几个例子

live555:
参考live555的码源给的/testProgs/testRTSPClient.cpp拉流代码
https://github.com/wexiangis/rtsp_to_h264 这个是live555接收h264的demo
补:
RK官方已放出各平台的rtsp代码,去model zoo就可以找到文章来源地址https://www.toymoban.com/news/detail-418252.html

到了这里,关于rk3588/rk356x/rv1109/rv1126 live555移植+mpp编译 rtsp拉流的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【RV1126】移植LVGL

    RV1126文件系统下面没有 /dev/fb0 设备节点: 进入kernel 进入配置: 修改位置一,如下: 修改位置二,如下: 之后重新编译生成固件烧写到开发板。 地址:https://github.com/lvgl/lv_port_linux_frame_buffer git克隆地址:https://github.com/lvgl/lv_port_linux_frame_buffer.git 官方文档:https://blog.lvgl.i

    2024年02月07日
    浏览(49)
  • RK3588移植-opencv交叉编译aarch64

    注意:本文中的所有配置相关路径都与当前安装的路径有关,需要根据自己的环境进行自行修改!!! OPENCV如果需要ffmpeg视频模块的话,不建议用cmake-gui,有很多bug。建议在ffmpeg相关依赖配置好后使用“问题:”中的cmake命令。 在做yolov5移植rk3588时,由于RKNPU2的example中open

    2024年02月06日
    浏览(51)
  • 【RV1126】移植kaldi实时语音识别

    参考:Greedy search与beam search 在下面会用到解码的方法选择 greedy_search :贪心搜索,贪心搜索是一种来自计算机科学的算法,生成第一个词的分布以后,它将会根据你的条件语言模型挑选出最有可能的第一个词进入你的机器翻译模型中,在挑选出第一个词之后它将会继续挑选出

    2024年02月04日
    浏览(46)
  • rv1126移植并部署自写手写数字识别模型

    --rknn_toolkit以及rknpu环境搭建-rv1126-CSDN博客 MNIST-https://github.com/warren-wzw/MNIST-pytorch.git 1:进入docker docker run -t -i --privileged -v /dev/bus/usb:/de/bus/usb   -v /home/wzw/rk_npu_sdk/rknn-toolkit-master-v1.7.3:/rknn_toolkit rknn-toolkit:1.7.3 /bin/bash 2:进入/rknn_toolkit/examples/onnx,复制一个resnet50v2并命名为MNI

    2024年02月14日
    浏览(38)
  • 基于RK3588的嵌入式linux系统开发(二)——uboot源码移植及编译

            由于官方的SDK占用空间较大(大约20GB左右),需要联系相关供应商提供,且官方的SDK通过各种脚本文件进行集成编译,难以理解系统开发的详细过程。本章介绍直接从官方Github网站下载源码进行移植,进行uboot移植及编译,具体内容如下所述: 1.进入官方的github网

    2024年01月16日
    浏览(61)
  • CMake rv1109交叉编译环境搭建

    准备安装包VMware-workstation-full-15.5.1-15018445.exe 下载地址 安装 参考资料 准备安装包ubuntu-18.04.4-desktop-amd64.iso 下载地址 安装 参考资料 准备安装包rv1109_toolchain_release.tar.bz2 下载地址 解压安装包rv1109_toolchain_release.tar.bz2 运行安装包脚本安装 配置环境变量~/.bashrc 安装结果检查 如下

    2024年02月10日
    浏览(38)
  • RK3588 MPP解码句柄泄露问题记录

    最近在用瑞芯微3588开发板做一个视频处理的项目,前两天拷机发生了闪退,弹出的问题是“打开文件过多”,经过初步排查定位到是MPP硬解码部分出的问题。 我的MPP解码部分主要用来读取网络相机rtsp流,主要参考了一个github项目GitHub - MUZLATAN/ffmpeg_rtsp_mpp: ffmpeg 拉取rtsp h264流

    2024年02月09日
    浏览(90)
  • ubuntu22.04下rv1109 rootfs编译问题处理

    出于对Ubuntu新版本系统的体验,将系统更新到了ubuntu22.04了。然后在编译rv1109 sdk时出现了一些异常的错误。但是已经不回去了,只能硬着头皮一路走下去了。并将错误记录以下,以便下次有类似错误,做个参考。 buildroot 报错:c-stack.c:55:26:error:missing binary operator before token “

    2024年02月11日
    浏览(40)
  • rk3588 mpp 视频硬编解码测试

    rk3588 mpp demo 使用记录。 MPP 源代码发布官方地址:https://github.com/rockchip-linux/mpp 发布分支为 release 分支,开发分支为 develop 分支,默认为开发分支。 下载命令:git clone https://github.com/rockchip-linux/mpp.git MPP 源代码编译脚本为 cmake,需要依赖 2.8.12 以上的版本,建议使用 2.8.12 版,

    2024年02月07日
    浏览(70)
  • MySQL交叉编译ARM32位版本在RV1126上运行

    想要编译个ARM32位的MYSQL,找遍全网没找到满意答案,搞定后写个文章方便后面参考 系统环境与关键位置信息 下载地址: https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2 提示:版本和目标系统版本一致,这里使用1.1.1f 下载地址: https://www.openssl.org/source/old/1.1

    2024年04月24日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包