ffmpeg源码裁剪移植到arm-linux

编译裁剪参考: 

    ffmpeg编译裁剪移植到arm-linux

基于上述极大化的编译裁剪,最终得到了三个加起来大小在1M左右的库, 虽然跟编译全开时的几十M相比已经裁剪了非常多了。

但在嵌入式环境中(FLASH只有32M甚至更小), 1M的大小还是不行的,这时需要直接去看懂源码, 基于源码进行删减。

我们项目就是基于源码进行删减,最终只编出了一个命名为libffmpeg.so的库,大小只有200多KB。

这个需要很强的功底,也费时间的,这里我只提供一个思路。

我们在make的时候,看到类似如下的信息:

CC      libavformat/allformats.o
CC      libavformat/avc.o
CC      libavformat/avienc.o
CC      libavformat/avio.o
CC      libavformat/aviobuf.o
CC      libavformat/cutils.o
CC      libavformat/file.o
CC      libavformat/format.o
CC      libavformat/id3v1.o
CC      libavformat/id3v2.o
libavformat/id3v2.c: In function ‘id3v2_parse’:
libavformat/id3v2.c:667:23: warning: variable ‘dlen’ set but not used [-Wunused-but-set-variable]
         unsigned long dlen;
                       ^
libavformat/id3v2.c:617:9: warning: unused variable ‘uncompressed_buffer_size’ [-Wunused-variable]
     int uncompressed_buffer_size = 0;
         ^
CC      libavformat/isom.o
CC      libavformat/metadata.o
CC      libavformat/mov_chan.o
CC      libavformat/movenc.o
CC      libavformat/movenchint.o
CC      libavformat/mux.o
CC      libavformat/options.o
CC      libavformat/os_support.o
CC      libavformat/riff.o
CC      libavformat/riffenc.o
CC      libavformat/rtp.o
CC      libavformat/rtpenc_chain.o
CC      libavformat/sdp.o
CC      libavformat/seek.o
CC      libavformat/url.o
CC      libavformat/utils.o

我们据此可知, 最终编译入库的,只有上述这些.o对应的.c文件

以此为出发点, 只保留编译出现的.c文件和最终输出的头文件, 这样一来范围一下就大大缩减。

 

接着就是看懂保留下来的源码, 进行源码的更改删除了。。。。。。。。

 

(PS: 等后面我有时间弄了,我在更新具体源码裁剪流程和遇到的问题)

你可能感兴趣的:(ffmpeg)