ffmpeg 静态链接第三方库

本文转载自:http://blog.csdn.net/fireroll/article/details/8607955

动态(共享)链接库自是有诸多优于静态链接库的特点:如能共享内存空间; 节约整个系统的存储空间,从而使整个系统速度提高; 当只有某个动态链接库有更新时--便于维护--只用更新这个库。

  但在有些情况下,如,服务器并不是你一个人独享;服务器上不止有一个版本的ffmpeg要用; 有一个集群的服务器需要你部署和维护,更新。这时能使用静态链接库就再好不过啦。


   FFmpeg对第三方库通常是优先使用动态链接的。可以使用下面介绍的步骤实现这些第三方库的静态链接,从而你的ffmpeg只用copy一个程序就可以到处用,也方便了部署和维护。
第三方库:(3RDLIB_INSTALL_PATH为本机上你想将第三方库安装的路径)
1. libfaac
#cd  faac-1.28
#./configure --prefix=3RDLIB_INSTALL_PATH --enable-static --disable-shared
#make;make install


2. libmp3lame
#cd lame-3.98.4
#./configure --prefix=3RDLIB_INSTALL_PATH --enable-static --disable-shared
#make; make install
NOTE:
因为它的configure参数并不起作用,所以一定要到3RDLIB_INSTALL_PATH/lib下将libmp3lame的动态库都删除。


3. libx264
#cd x264-snapshot-VERSION
#./configure --prefix=3RDLIB_INSTALL_PATH --enable-static
#make; make install


FFmpeg的配置
#cd ffmpeg
#./configure 
--enable-gpl --enable-nonfree --enable-version3 
--disable-shared --enable-static 
--enable-pthreads --enable-runtime-cpudetect 
--enable-zlib --enable-bzlib \
--enable-postproc 
--extra-cflags='-I3RDLIB_INSTALL_PATH/include -DREDIRECT_DEBUG_LOG' 
--extra-ldflags='-L3RDLIB_INSTALL_PATH/lib -gl' 
--enable-libxvid --enable-decoder=libxvid --enable-encoder=libxvid 
--disable-encoder=aac 
--enable-libfaac --enable-encoder=libfaac 
--enable-libmp3lame --enable-encoder=libmp3lame 
--enable-libx264 --enable-encoder=libx264 
--enable-avfilter --enable-filter=movie
#make; 


其实,静态链接的关键就是要保证在你的库路径“3RDLIB_INSTALL_PATH”下没有动态链接库(.so),这样ffmpeg在默认的动态库找不到的情况下就会链接静态库。


最新的ffmpeg v0.11编译与链接
1. libfaac
$cd faac-1.28
$./configure --prefix=3RDLIB_INSTALL_PATH --enable-static --disable-shard
$make
$make install
2. libmp3lame
$tar -zxvf lame-3.98.4.tar.gz
$./configure --prefix=3RDLIB_INSTALL_PATH--enable-static --disable-shared
$make
$make install
3.libx264
$git clone git://git.videolan.org/x264.git
$cd x264
$./configure --prefix=3RDLIB_INSTALL_PATH --enable-static
$make
$make install
4.librtmp
$git clone git://git.ffmpeg.org/rtmpdump
$cd rtmpdump
$cd librtmp
修改Makefile文件


$vim Makefile
#prefix=/usr/local
prefix=3RDLIB_INSTALL_PATH
...
#CRYPTO=OPENSSL
CRYPTO=
...
#SO_LDFLAGS_posix=-shared -Wl,-soname,$@ 
SO_LDFLAGS_posix=-Wl,-soname,$@
...
#SHARED=yes
SHARED=no 


保存并退出


$make
$cd ..
$make SYS=darwin XDEF=-DNO_SSL CRYPTO= SHARED= 
$make install




5. ffmpeg配置
$cd ffmpeg


修改configure文件
$vim configure
...
#enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
enabled librtmp && { check_lib librtmp/rtmp.h RTMP_Socket -lrtmp -lpolarssl -lwinmm -lws2_32 ||
                        check_lib librtmp/rtmp.h RTMP_Socket -lrtmp -lssl -lcrypto -lz ||
                                                die "ERROR: librtmp not found or RTMP_Socket() missing, librtmp 


version must be >= 2.2.f"; }


保存并退出
也可以改成这样:
$vim configure
...
#enabled librtmp && require_pkg_config librtmp librtmp/rtmp.h RTMP_Socket
enabled librtmp && { check_lib librtmp/rtmp.h -lrtmp||
                        check_lib librtmp/rtmp.h -lrtmp  -lz ||
                                                die "ERROR: librtmp not found or RTMP_Socket() missing, librtmp 


version must be >= 2.2.f"; }


保存并退出








$./configure \
--enable-gpl --enable-nonfree --enable-version3 \
--disable-shared --enable-static \
--enable-pthreads --enable-runtime-cpudetect \
--enable-zlib --enable-bzlib \
--enable-postproc \
--extra-cflags='-I/3RDLIB_INSTALL_PATH/include -DREDIRECT_DEBUG_LOG' \
--extra-ldflags='-L/3RDLIB_INSTALL_PATH/lib -gl' \
--disable-encoder=aac \
--enable-libfaac --enable-encoder=libfaac \
--enable-libmp3lame --enable-encoder=libmp3lame \
--enable-libx264 --enable-encoder=libx264 \
--enable-avfilter --enable-filter=movie \
--enable-librtmp


$make
$make install
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值