基于Hi3516DV300rtmp交叉编译移植

基于Hi3516DV300rtmp交叉编译移植 Mrs Wu 2024-01-18 15:08:33 2146

其实自己不太会写甚么博客,或者方法的,所以导致自己开发完一些功能后,后续再去看自己写的代码,去配置相关的功能也好,总是需要花费挺长时间重新回忆起来。
废话少说,说一下自己的研发历程,全是干货。

硬件平台

硬件平台是海思的A182-Hi3516DV300 板子是由易百纳出品的一款开发板,可以自行选择相关系列的开发板,也可以选别家的,这里建议选择易百纳的,不是他们给我钱了,而是不选择他们的很有可能基础环境都搭建不好。

开发平台

开发平台其实就是宿主机,是执行编译、链接嵌入式软件的计算机;
我使用的是虚拟机、安装的系统是Ubuntu18.04

开发概述

在确保上述两个环境都有的情况下,要想实现rtmp推流,代码有这么几项需求,编码H264的帧、封装FLV、推送流rtmp实现,其实也就这三部分、下面一步一步介绍。

H264编码

编码H264的帧的实现直接使用的是mpp/sample/region 这个例程,后续所有的开发也是依托于此例程进行开发的,这个没什么好说的,整个编码过程也是实现好的、代码实现的流程在我上传文件里面。

推送rtmp的实现

推送rtmp的实现我们这里着重介绍,因为我们的重点就是利用librtmp来进行推流,我们也参考了许多博主的博客,有些地方可能会直接上链接,有踩坑的地方,我这边尽量标注出来同时也会提供自己编译通过的库文件。

Nginx搭建rtmp服务器

我们在做推流项目之前,首先要搭建一个属于自己的rtmp服务器,搭建方法我就不赘述了,这里我直接引用其他博主写的搭建方法 链接:https://blog.csdn.net/qq_37079898/article/details/125037560

RTMP推流及协议学习

在进行rtmpdump源码编译之前,我建议可以多读几遍RTMP推流协议的学习一下,学习地址:
https://blog.csdn.net/lory17/article/details/61916351?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-61916351-blog-11266569.pc_relevant_vip_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-1-61916351-blog-11266569.pc_relevant_vip_default&utm_relevant_index=1

海思之交叉编译rtmpdump

一、前言

交叉编译rtmpdump,目的是为了让hisi板子实现rtmp推送视频流。

二、说明

要交叉编译rtmpdump,前提需要openssl和zlib两个相关的库。

当前我使用的硬件平台:Hi3516DV300编译链接 arm-himix200-linux-

三、openssl移植

openssl 下载地址:ftp://ftp.openssl.org/source/old/0.9.x/ 当然你可以根据自己的需求下载最新版本。
wpa_supplicant官方网站进行下载:http://w1.fi/releases/
当前我使用openssl-0.9.8za和wpa_supplicant-2.5
分别使用tar -xvf openssl-0.9.8za.tar.gz 和tar -xvf wpa_supplicant-2.5.tar.gz 解压到当前路径(我会提供文件以及配置好的makfile)

1.打补丁

cp wpa_supplicant-2.5/patches/openssl-0.9.8za-tls-extensions.patch
openssl-0.9.8za/
cd openssl-0.9.8za/
patch -p1 < openssl-0.9.8za-tls-extensions.patch

结果显示

   patching file ssl/s3_clnt.c
   patching file ssl/s3_srvr.c
   patching file ssl/ssl.h
   patching file ssl/ssl_err.c
   patching file ssl/ssl_sess.c
   patching file ssl/t1_lib.c
   patching file ssl/tls1.h
   patching file util/ssleay.num
   ./config --prefix=$PWD/out no-asm shared

no-asm是在交叉编译过程中不使用汇编代码代码加速编译过程.原因是它的 汇编代码是对arm格式不支持的

2.修改makefile

#CC= gcc
#CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall
CC= arm-himix200-linux-gcc
CFLAG= -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -march=armv5 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int
DEPFLAG= -DOPENSSL_NO_CAMELLIA -DOPENSSL_NO_CAPIENG -DOPENSSL_NO_CMS -DOPENSSL_NO_GMP -DOPENSSL_NO_JPAKE -DOPENSSL_NO_MDC2 -DOPENSSL_NO_RC5 -DOPENSSL_NO_RFC3779 -DOPENSSL_NO_SEED
PEX_LIBS= 
EX_LIBS= -ldl
EXE_EXT= 
ARFLAGS= 
#AR= ar $(ARFLAGS) r
#ARD=ar $(ARFLAGS) d
#RANLIB= /usr/bin/ranlib
AR = arm-himix200-linux-ar $(ARFLAGS) r
RANLIB= arm-himix200-linux-ranlib
NM= arm-himix200-linux-nm
PERL= /usr/bin/perl
TAR= tar
TARFLAGS= --no-recursion --record-size=10240
MAKEDEPPROG= gcc
LIBDIR=lib

说明:
安装路径INSTALL_PREFIX=
INSTALLTOP=/home/lzq/hi3520d/tools/openssl-0.9.8za/out

3.编译安装

    make clean
    make
    make install

4.安装出错解决

    smime.pod around line 272Expected text after =item, not a number
  smime.pod around line 276Expected text after =item, not a number
  smime.pod around line 280Expected text after =item, not a number
  smime.pod around line 285Expected text after =item, not a number
  smime.pod around line 289Expected text after =item, not a number
  POD document had syntax errors at /usr/bin/pod2man line 71.

解决方法:
删除 pod2man文件:sudo rm /usr/bin/pod2man

-MD5的错误
解决方法就是到makefile 里面删除 带有-MD5的语句就可以了

四.zlib库交叉编译

下载地址:http://zlib.net/ 选择相关版本下载
当前我使用:zlib-1.2.13.tar.gz
解压:

tar -zxvf zlib-1.2.13.tar.gz

编译

CC=arm-himix200-linux-gcc ./configure  --prefix=./lib

说明:CC使用arm-himix200-linux-gcc,根据自己交叉编译器定义
–prefix设置安装目录
执行上面语句:

make install

当前生成的文件:

五、交叉编译rtmpdump

下载:git clone git://git.ffmpeg.org/rtmpdump
修改两个Makefile
注意配置openssl和zlib路径
第一个:

#prefix=/usr/local
prefix=./#安装路径

CROSS_COMPILE=arm-himix200-linux-
XCFLAGS +=-I ../openssl-0.9.8za/out/include
XCFLAGS += -I ../zlib-1.2.13/lib/include


XLDFLAGS += -L ../openssl-0.9.8za/out/lib
XLDFLAGS += -L ../zlib-1.2.13/lib/lib

进入librtmp修改第二个Makefile

#prefix=/usr/local
prefix=./
CROSS_COMPILE = arm-himix200-linux-
XCFLAGS +=-I ../../openssl-0.9.8za/out/include
XCFLAGS += -I ../../zlib-1.2.11/lib/include


XLDFLAGS += -L ../../openssl-0.9.8za/out/lib
XLDFLAGS += -L ../../zlib-1.2.11/lib/lib

修改后返回文件首层目录

执行make

make install

进入librtmp会看到

到此步说明编译成功。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
Mrs Wu
红包 点赞 2 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Mrs Wu
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区