您的位置:首页 > 运维架构

Openwrt之libffmpeg-custom配置编译过程

2017-01-22 13:38 302 查看
默认情况下,Openwrt是移植了Libffmpeg-full架构的,同时包含libffmpeg-custom、libffmpeg-mini、libffmpeg-audio-dec架构。但是openwrt中关于ffmpeg的makefile目前只能编译通过libffmpeg-full架构,其他三个还有待验证与修改。本文就针对libffmpeg-custom架构编译进行makefile配置修改。

1、makefile 与 config.in之间的关系

由于openwrt / ffmpeg的makefile中包含:

define Package/libffmpeg-custom/config

source "$(SOURCE)/Config.in"

endef

即,对于libffmpeg-custom模块在menuconfig中,包含配置子菜单。

对于子菜单内容,由config.in决定。

对于子菜单中内容选中是否生效,则需要同时在openwrt / ffmpeg的makefile中配置相应的宏。

如:

menuconfig中libffmpeg-custom的decoders模块:



需要有AAC选项,则config.in中需要对应的:



同时,要使在menuconfig中选择了AAC decoder就对应的AAC decoder生效的话,还需要 openwrt / ffmpeg的makefile中FFMPEG_CUSTOM_DECODERS宏中包含AAC decoder。



只有在编译产生的config.h中对应的宏都为1,同时该宏对应的.c文件都产生了.o文件,才能说明,该文件确实被编译了。

#define CONFIG_AAC_DECODER 1

#define CONFIG_AAC_FIXED_DECODER 1

#define CONFIG_AAC_LATM_DECODER 1

#define CONFIG_LIBFDK_AAC_DECODER 1

2、menuconfig中libffmpeg-custom添加新模块

在menuconfig中的libffmpeg-custom配置子菜单中添加新选项,filters,则需要在openwrt/ffmpeg  makefile 中添加 filter

FFMPEG_CUSTOM_FILTERS:= \

 aresample adrawgraph showvolume showwaves showspectrum aphasemeter amovie

同时,在宏PKG_CONFIG_DEPENDS中添加filter

PKG_CONFIG_DEPENDS:= \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))\

 $(patsubst %,CONFIG_FFMPEG_CUSTOM_FILTER_%,$(FFMPEG_CUSTOM_FILTERS))

且在FFMPEG_CONFIGURE中添加filter。

同时,config.in中也需添加对应模块:



此时,就可以menuconfig中选择aresample filter了。但编译过后,发现aresample.c并没有产生对应的.o文件,查看config.h中发现对应的宏CONFIG_ARESAMPLE_FILTER也是为0。这说明,aresample虽然在menuconfig中可选,但选中仍未生效。查找ffmpeg资料,发现aresample filter还依赖于库libswresample,所以enable libavfilter的同时,还需要enable libswresample,才可以使aresample
filter真正生效。

3、写好config.in以及makefile中libffmpeg-custom相关的宏,只是为了配置好menuconfig中的菜单选项,至于如何能使libffmpeg-custom编译通过,还需对makefile进一步修改。

首先,DEPENDS需修改为@BUILD_PATENTED (具体什么原因,还不是很清楚)



同时,安装开发环境时,需把对应的库放入开发环境以用于编译调用(此时,只是把6个库放入了开发环境。):



最后,安装时(安装,就是把对应的库拷贝到相应的目录下)



这里安装时,只将6个动态库拷贝到了相应目录下。这说明libffmpeg-custom只融合了这6个库,基于这6个库的开发,可以使用libffmpeg-custom。如果有涉及到Libswscale库的API调用开发,单链接Libffmpeg-custom 是会出错的。同时,安装过程,拷贝到相应目录的动态库的总大小,会影响最后生成的.ipk以及.bin文件的大小。这对于系统大小裁剪也是一个可考虑因素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐