基于Hi3516DV300rtmp交叉编译移植

基于Hi3516DV300rtmp交叉编译移植

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

硬件平台

硬件平台是海思的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 272: Expected text after =item, not a number
  smime.pod around line 276: Expected text after =item, not a number
  smime.pod around line 280: Expected text after =item, not a number
  smime.pod around line 285: Expected text after =item, not a number
  smime.pod around line 289: Expected 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会看到

在这里插入图片描述
到此步说明编译成功。

文件链接https://mp.csdn.net/mp_download/manage/download/UpDetailed

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值