Ubuntu ffmpeg编译静态库和共享库

来源:互联网 发布:qq微商软件 编辑:程序博客网 时间:2024/05/29 18:02

Ubuntu16.04 环境下编译ffmpeg生成静态库和共享库

参考官方文档
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu#RevertingChangesMadebyThisGuide

基本上按照这个步骤编

Compile FFmpeg on Ubuntu,Debian,or Mint

Get the Dependencies

sudo apt-get updatesudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev \  libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev \  libxcb-xfixes0-dev pkg-config texinfo wget zlib1g-dev

Compilation & Installation

mkdir ~/ffmpeg_sources

任意指定一个目录即可

Yasm

强烈推荐使用,不然会编得很慢
An assembler for x86 optimizations used by x264 and FFmpeg. Highly recommended or your resulting build may be very slow.

If your repository provides yasm version ≥ 1.2.0 then you can install that instead of compiling:

sudo apt-get install yasm

cd ~/ffmpeg_sourceswget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar xzvf yasm-1.3.0.tar.gzcd yasm-1.3.0./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"makemake install

nasm

使用x264的话就需要
NASM assembler. Required for compilation of x264 and other tools.

cd ~/ffmpeg_sourceswget http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.bz2tar xjvf nasm-2.13.01.tar.bz2cd nasm-2.13.01./autogen.shPATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"PATH="$HOME/bin:$PATH" makemake install

libx264

H.264 video encoder. See the H.264 Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with –enable-gpl –enable-libx264.

If your repository provides libx264-dev version ≥ 118 then you can install that instead of compiling:

sudo apt-get install libx264-dev

cd ~/ffmpeg_sourceswget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2tar xjvf last_x264.tar.bz2cd x264-snapshot*PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static --disable-openclPATH="$HOME/bin:$PATH" makemake install

以下的库有选择地安装吧,有些音频的库用不到,都安装也可以,注意看英文说明,哪个需要在运行configure文件的时候,enable一下

libx265

H.265/HEVC video encoder. See the H.265 Encoding Guide for more information and usage examples.

If your repository provides libx265-dev version ≥ 68 then you can install that instead of compiling:

sudo apt-get install libx265-dev

sudo apt-get install cmake mercurialcd ~/ffmpeg_sourceshg clone https://bitbucket.org/multicoreware/x265cd ~/ffmpeg_sources/x265/build/linuxPATH="$HOME/bin:$PATH" cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$HOME/ffmpeg_build" -DENABLE_SHARED:bool=off ../../sourcemakemake install

libfdk-aac

AAC audio encoder. See the AAC Audio Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with –enable-libfdk-aac (and –enable-nonfree if you also included –enable-gpl).

If your repository provides libfdk-aac-dev then you can install that instead of compiling:

sudo apt-get install libfdk-aac-dev

cd ~/ffmpeg_sourceswget -O fdk-aac.tar.gz https://github.com/mstorsjo/fdk-aac/tarball/mastertar xzvf fdk-aac.tar.gzcd mstorsjo-fdk-aac*autoreconf -fiv./configure --prefix="$HOME/ffmpeg_build" --disable-sharedmakemake install

libmp3lame

MP3 audio encoder.

Requires ffmpeg to be configured with –enable-libmp3lame.

If your repository provides libmp3lame-dev version ≥ 3.98.3 then you can install that instead of compiling:

sudo apt-get install libmp3lame-dev

cd ~/ffmpeg_sourceswget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gztar xzvf lame-3.99.5.tar.gzcd lame-3.99.5./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-sharedmakemake install

libopus

Opus audio decoder and encoder.

Requires ffmpeg to be configured with –enable-libopus.

If your repository provides libopus-dev version ≥ 1.1 then you can install that instead of compiling:

sudo apt-get install libopus-dev

cd ~/ffmpeg_sourceswget https://archive.mozilla.org/pub/opus/opus-1.1.5.tar.gztar xzvf opus-1.1.5.tar.gzcd opus-1.1.5./configure --prefix="$HOME/ffmpeg_build" --disable-sharedmakemake install

libvpx

VP8/VP9 video encoder and decoder. See the VP8 Video Encoding Guide for more information and usage examples.

Requires ffmpeg to be configured with –enable-libvpx.

If your repository provides libvpx-dev version ≥ 0.9.7 then you can install that instead of compiling:

sudo apt-get install libvpx-dev

sudo apt-get install gitcd ~/ffmpeg_sourcesgit clone --depth 1 https://chromium.googlesource.com/webm/libvpx.gitcd libvpxPATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples --disable-unit-testsPATH="$HOME/bin:$PATH" makemake install

最后,ffmpeg

cd ~/ffmpeg_sourceswget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2tar xjvf ffmpeg-snapshot.tar.bz2cd ffmpegPATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" 

在解压后的ffmpeg目录下面有configure文件,打开或者运行./configure –help可看到使用说明,以下是官方文档中的配置,其中–pkg-config-flags=”–static”一句表明只生成静态库.a,若想生成共享库.so,或者都生成,参考文章最后的配置。

./configure \  --prefix="$HOME/ffmpeg_build" \  --pkg-config-flags="--static" \  --extra-cflags="-I$HOME/ffmpeg_build/include" \  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \  --bindir="$HOME/bin" \  --enable-gpl \  --enable-libass \  --enable-libfdk-aac \  --enable-libfreetype \  --enable-libmp3lame \  --enable-libopus \  --enable-libtheora \  --enable-libvorbis \  --enable-libvpx \  --enable-libx264 \  --enable-libx265 \  --enable-nonfreePATH="$HOME/bin:$PATH" makemake installhash -r

只生成静态库.a:使用以上配置
只生成共享库.so:
删去–pkg-config-flags=”–static”一句
使用–enable-shared –disable-static
静态库.a和共享库.so都声称:
删去–pkg-config-flags=”–static”一句
仅使用–enable-shared(两条-)

最终,在~/ffmpeg-build/lib目录下,可查看到生成的相关库。
这里写图片描述
注:生成的.so有一些是.so.*形式的扩展名,如不想生成此种形式,需要修改configure文件。
贴出网上的一种改法:
将该文件中的如下四行:

SLIBNAME_WITH_MAJOR=’(SLIBNAME).(LIBMAJOR)’

LIB_INSTALL_EXTRA_CMD=’$$(RANLIB)”$(LIBDIR)/$(LIBNAME)”’

SLIB_INSTALL_NAME=’$(SLIBNAME_WITH_VERSION)’

SLIB_INSTALL_LINKS=’(SLIBNAMEWITHMAJOR)(SLIBNAME)’

替换为:

SLIBNAME_WITH_MAJOR=’(SLIBPREF)(FULLNAME)-(LIBMAJOR)(SLIBSUF)’

LIB_INSTALL_EXTRA_CMD=’$$(RANLIB)”$(LIBDIR)/$(LIBNAME)”’

SLIB_INSTALL_NAME=’$(SLIBNAME_WITH_MAJOR)’

SLIB_INSTALL_LINKS=’$(SLIBNAME)’

如果想撤销以上所有操作对你的系统造成的改变,使用以下命令

 rm -rf ~/ffmpeg_build ~/ffmpeg_sources  ~/bin/{ffmpeg,ffprobe,ffplay,ffserver,x264,x265,nasm}sudo apt-get autoremove autoconf automake build-essential cmake libass-dev libfreetype6-dev \  libmp3lame-dev libopus-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev \  libvorbis-dev libvpx-dev libx264-dev libxcb1-dev libxcb-shm0-dev ibxcb-xfixes0-dev mercurial texinfo zlib1g-devsed -i '/ffmpeg_build/c\' ~/.manpathhash -r

更多内容请参考文章一开始贴出的官方文档网站。

原创粉丝点击