librtmp linux下 编译,交叉编译能在Atlas500(aarch64)上运行的ffmpeg+x264+librtmp

小白编译的过程,请指点

1.在Linux上准备交叉编译环境

1.1准备交叉编译链,文件夹名字叫Euler_compile_env_cross,申请把

1.2修改/etc/profile文件,在最后一行添加

export PATH=$PATH:/home/hy/Desktop/compile/Euler_compile_env_cross/arm/cross_compile/install/bin

我的解压目录是/home/hy/Desktop/compile/Euler_compile_env_cross,这里修改成自己的目录

1.3应用更改

source /etc/profile

我这里不允许这样,只能sudo -i /etc/profile, 但这样有弊端,保险起见,直接重启机器

1.4 重启后看是否生效

aarch64-linux-gnu-g++ -v

打印一长串东西,有版本什么的,环境就配置完成了

2. 交叉编译librtmp

2.1编译zlib

下载地址 zlib.net,我这里用的1.2.11版本

tar -xvzf zlib-1.2.11.tar.gz

cd zlib-1.2.11

CC=aarch64-linux-gnu-gcc ./configure --prefix=/usr/local/aarch64/zlib

make

sudo make install

上面的prefix是你的安装目录,要记住,到时候要拷贝文件,下同

2.2.编译openssl

下载地址 https://github.com/openssl/openssl/releases

解压:

tar -xvzf openssl-OpenSSL_1_0_2r.tar.gz

输入命令:

CC=aarch64-linux-gnu-gcc \

CXX=aarch64-linux-gnu-g++ \

AR=aarch64-linux-gnu-ar \

RANLIB=aarch64-linux-gnu-ranlib \

NM=aarch64-linux-gnu-nm \

./config shared no-asm --prefix=/usr/local/aarch64/openssl

其中shared 是动态库,no-asm是在交叉编译时不使用汇编加速

打开Makefile文件,删除所有的-m64

make

sudo make install

安装libssl-dev:

由于是EulerOS基于fedora,所以用sudo yum install openssl-devel

设置环境变量(在/etc/profile文件最后添加):

export OPENSSL=/usr/local/aarch64/openssl/bin

export PATH=$OPENSSL:$PATH:$HOME/bin

C_INCLUDE_PATH=/usr/local/aarch64/openssl/include/

export C_INCLUDE_PATH

CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/aarch64/openssl/include/

export CPLUS_INCLUDE_PATH

应用环境变量修改:

sudo -i source /etc/profile

2.3.编译librtmp

下载 git clone git://git.ffmpeg.org/rtmpdump

修改rtmpdump/Makefile:

修改:

prefix=/usr/local/aarch64/librtmp

LIB_OPENSSL=-lssl -lcrypto $(LIBZ) -ldl

新增:

CROSS_COMPILE=aarch64-linux-gnu-

XCFLAGS=-I/usr/local/aarch64/openssl/lib -I/usr/local/aarch64/zlib/lib

XLDFLAGS=-L/usr/local/aarch64/openssl/lib -L/usr/local/aarch64/zlib/lib

修改rtmpdump/librtmp/Makefile:

修改:

prefix=/usr/local/aarch64/librtmp

新增:

CROSS_COMPILE=aarch64-linux-gnu-

XCFLAGS=-I/usr/local/aarch64/openssl/include -I/usr/local/aarch64/zlib/include -L/usr/local/aarch64/openssl/lib -L/usr/local/aarch64/zlib/lib

编译安装

make

sudo make install

3.交叉编译安装x264

下载 https://code.videolan.org/videolan/x264

tar -xvzf x264-master.tar.gz

cd x264-master

./configure \

--prefix=/usr/local/aarch64/x264 \

--host=aarch64-linux \

--cross-prefix=aarch64-linux-gnu- \

--enable-shared \

--enable-static

make

sudo make install

4.交叉编译ffmpeg

4.1下载源码,我这里用的4.2.3版本

tar -jxvf ffmpeg-4.2.3.tar.bz2

修改/etc/profile,添加一行:

export PKG_CONFIG_PATH=/usr/local/aarch64/librtmp/lib/pkgconfig:/usr/local/aarch64/openssl/lib/pkgconfig:/usr/local/aarch64/x264/lib/pkgconfig:$PKG_CONFIG_PATH

写完别忘了sudo -i source /etc/profile

4.2编译安装aarch64版本ffmpeg

进入ffmpeg解压目录

./configure \

--prefix=/usr/local/aarch64/ffmpeg \

--target-os=linux \

--arch=aarch64 \

--enable-cross-compile \

--cross-prefix=aarch64-linux-gnu- \

--enable-shared \

--disable-doc \

--enable-libx264 \

--enable-openssl \

--enable-librtmp \

--enable-gpl --enable-nonfree --pkg-config=pkg-config

make

sudo make install

假如提示 /bin/sh: aarch64-linux-gnu-ranlib: command not found, 参见第一步

5. 在Atlas500上测试

新建目录, 就叫ffmpeg把,放到哪里无所谓

进入/usr/local/aarch64目录,这里有我们编译好的x264,zlib,openssl,ffmpeg,librtmp,把对应的bin目录和lib目录里面

的可执行文件(bin目录的执行文件,lib目录的动态库),统统拷贝到刚创建的ffmpeg目录

想办法把ffmpeg目录放到Atlas500上面去(可以用nfs进行共享,如何共享,有需要的小伙伴可以留言,这里就不说了),

为了能在任何地方都能输入ffmpeg命令,我们把ffmpeg目录加入到环境变量(/etc/profile)

export PATH=/opt/ffmpeg:$PATH

假设我们把linux的ffmpeg目录拷贝到了Atlas上的/opt/ffmpeg目录

sudo -i source /etc/profile

现在,输入ffmpeg命令测试把

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值