基于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会看到
到此步说明编译成功。
- 分享
- 举报
-
浏览量:721次2024-01-18 15:33:23
-
浏览量:4714次2020-09-30 18:01:11
-
浏览量:871次2024-06-06 09:47:33
-
浏览量:844次2024-01-22 17:02:06
-
浏览量:4929次2023-03-20 13:32:44
-
浏览量:2090次2023-07-12 15:22:31
-
浏览量:8229次2022-06-01 10:01:04
-
浏览量:653次2024-02-05 17:05:51
-
浏览量:4381次2020-07-31 13:45:09
-
浏览量:3408次2022-10-13 17:29:06
-
浏览量:2318次2023-06-28 15:57:28
-
浏览量:4671次2022-10-17 20:51:39
-
浏览量:116次2024-09-13 11:55:31
-
浏览量:1807次2024-02-05 15:51:53
-
浏览量:1033次2024-01-08 16:49:01
-
浏览量:2630次2022-10-14 10:34:46
-
浏览量:1388次2023-06-12 14:18:20
-
浏览量:14583次2020-12-18 17:44:33
-
浏览量:1312次2023-11-06 11:04:59
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
Mrs Wu
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明