海思3516ev200 _FFMPEG库编译

平台:海思3516EV200
编译链:arm-himix100-gcc

FFMPEG各个版本:
FFMPEG_4.0.5

链接:https://pan.baidu.com/s/1UWfdtwrTHIwkVYLRSiU1uQ
提取码:w16z

FFMPEG_3.4.7

链接:https://pan.baidu.com/s/1KNbl-5mIBADB3ILbwQ0vLA
提取码:mgzy

FFMPEG_3.2.14

链接:https://pan.baidu.com/s/1_ENhYPDFeTiogrW7ZT1ytQ 提取码:fit8

FFMPEG_2.8.15

链接:https://pan.baidu.com/s/12cXrYIJtMbCdkQxAbv8rhg 提取码:31nc

以上是各个大版本的FFMPEG库的源码包。(arm-himix100-gcc链编译4.0以上版本都会提示一个错误)
经过多次测试之后发现,编译4.0以上的FFMPEG版本,会出现以下问题。

libavfilter/libavfilter.so: undefined reference to fminf
libavfilter/libavfilter.so: undefined reference to `fmaxf'

(多次操作和各种添加函数,连接库等等操作,都没办法搞。 有搞完的大神可以分享一下心得)

说明:
在编译FFMPEG之前我们需要安装以下一个库,这个库是X264,这个库里面包含了FFMPEG生成具体的库的插件,要是不需要这个功能的话,可以不下载加载这个库, 但是在FFMPEG的配置文件里面需要禁止使能这个功能,不然会提示找不到库,编译不通过。
具体步骤:
一、编译生成X264库
二、编译生成FFMPEG库
三、移植到海思开发板上面

一、编译生成X264库
①下载X265库:

链接:https://pan.baidu.com/s/1yQIK7nvDxXSRaDd4RVvSPg
提取码:7kkn

②、在linux下面解压

tar -xfvf x265_xxx.tar.bz2

③、编译里面的配置文件

CC=arm-himix100-linux-gcc ./configure \ --host=arm-himix100-linux
–prefix=/home/x264-snapshot-20161225-2245/build_hisix100
–cross-prefix=arm-himix100-linux- \
–enable-static
–enable-shared \


/说明
–prefix :是指定安装的目录,就是编译之后的库文件就会在这个目录,
–enable-static :是生成静态库的选项
建议写一个shell脚本,将上面的配置参数写进去,要注意的是交叉编译链的差异,海思不同平台的交叉编译平台的链不一样,按个人来
********/

执行这个脚本之后最后面打印以下语句,证明应已经配置成功了。

WARNING: The --enable-yasm option is only provided for compatibility
and will beremoved in the future. Use --enable-x86asm /
–disable-x86asm instead.

WARNING: arm-himix100-linux-pkg-config not found, library detection
may fail.

WARNING: using libx264 without pkg-config

④编译X264库

make clean
make && make install


查看–prefix参数目录,看看里面是否存在对应的头文件和bin文件,和库文件。至此已经完成。

二、编译FFMPEG库
①、在上面选择一个版本的FFMPEG文件包,下载,解压
②、配置FFMPEG参数

./configure \
	--prefix=./build_hisix100 \
	--enable-yasm \
	--enable-ffplay \
	--enable-ffprobe \
	--enable-debug \
	--disable-avdevice \
	--enable-encoders \
	--enable-ffmpeg \
	--enable-static \
	--enable-gpl \
	--enable-small \
	--target-os=linux \
	--arch=arm \
	--enable-nonfree \
	--enable-cross-compile \
	--enable-encoder=libx264 \
	--enable-libx264 \
	--cross-prefix=arm-himix100-linux- \
	--extra-cflags=-I/home/x264-snapshot-20161225-2245/build_hisix100/include \
	--extra-ldflags=-L/home/x264-snapshot-20161225-2245/build_hisix100/lib \
	--enable-shared \
	--cc=arm-himix100-linux-gcc \

*************************
要注意以下参数:
--prefix    :  编译安装之后FFMPEG库存放的目录
--enable-static :  选择编译出来静态库(这个静态库很大,看自己需要是否编译出来)
--cross-prefix :具体的交叉编译链
--extra-cflags=-I   :在上面刚编译出来的X264的头文件位置,要指定一下
--extra-ldflags=-L :在上面刚编译出来的X264的库位置,要指定一下

③、编译生成对应的FFMPEG库

make clean
make && make install

在–prefix 参数指定的目录,查看一下是否存在以下目录,即编译成功。
include lib bin

三、移植到海思开发板上面
在移植之前可以声明一下,当编写应用时应用到FFMPEG库,可以在Makefile连接静态库和动态库。具体区别自行百度。以下是移动动态库的移植。

首先将上面编译出来的lib里面文件,移动到海思开发板的/usr/lib里面
将bin目录里面两个可执行程序文件,创建/opt/ffmpeg目录并存放到海思开发板的/opt/ffmpeg。
然后修改一下环境自动关联到这个两个文件。

vi /etc/profile
export PATH="/opt/ffmpeg/:$PATH"

然后重新启动海思开发板,在根目录指定

ffmpeg -help
有对应的信息打印出来,即是移植成功,在海思开发板里面也可以使用的FFMPEG命令操作。

遇到的错误:
①、当执行FFMPEG命令时候,出现这个问题。

bus error
要更新交叉编译器的C++库, 到海思开发板的/lib

(完)

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值