第一次编译ffmpeg花了好久时间查资料和研究,记录下笔记以免忘记。
Ubuntu下原生编译ffmpeg
- 下载ffmpeg源码,地址:http://www.ffmpeg.org/download.html
- 解压源码,以我的目录为例:xz -d ffmpeg-20170921-183fd30.tar.xz tar -xvf ffmpeg-20170921-183fd30.tar
- 安装yasm支持: sudo apt-get install yasm 。 (也可以跳过,如果不安装yasm,编译的时候需要加上 -disable yasm 参数)
- 进入ffmpeg源码路径,修改configure编译设置项:
将下面四行:
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR)$(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)'
- 执行configure文件。./configure --prefix=/usr/local --enable-shared --disable-static --disable-x86asm 过滤项比较少,如果有需要可自己加过滤项,精简一些不需要的模块
- make
- sudo make install
- 输入ffmpeg命令,验证是否安装成功。成功的结果如图:
- 检查库依赖是否正确:ldd ffmpeg
Ubuntu下编译Android用到的ffmpeg库
先配置NDK环境。
- 下载NDK,地址:https://developer.android.google.cn/ndk/downloads/index.html
- 解压:/home/donwz/dev/ndk/
- 配置环境变量:sudo gedit ~/.bashrc,在末尾加入:
export NDK=/home/donwz/dev/ndk/android-ndk-r14b
export PATH=${PATH}:$NDK - 使环境变量生效:source ~/.bashrc
- 输入命令ndk-build,如果提示如图则代表配置成功。
接下来 编译ffmpeg。
使用NDK编译ffmpeg,前面四个步骤和原生编译步骤是一样的。
- 在源码目录下新建build_android.sh脚本,编写脚本:
#!/bin/bash NDK=/home/donwz/dev/ndk/android-ndk-r14b export TMPDIR="/home/donwz/app/ffmpeg/build" function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-doc \ --disable-symver \ --disable-x86asm \ --cross-prefix=$CROSS_PREFIX \ --target-os=linux \ --arch=$CPU \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-fpic" \ --extra-libs=-lgcc \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install } #--extra-ldflags="$ADDI_LDFLAGS" \ #x86 CPU=x86 PREFIX=$(pwd)/android/$CPU TOOLCHAIN=$NDK/toolchains/x86-4.9/prebuilt/linux-x86_64 CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android- SYSROOT=$NDK/platforms/android-24/arch-$CPU ADDI_CFLAGS="-marm" build_one #x86_64 CPU=x86_64 PREFIX=$(pwd)/android/$CPU TOOLCHAIN=$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64 CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android- SYSROOT=$NDK/platforms/android-24/arch-$CPU ADDI_CFLAGS="-marm" build_one #arm CPU=arm PREFIX=$(pwd)/android/$CPU TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi- SYSROOT=$NDK/platforms/android-24/arch-$CPU ADDI_CFLAGS="-marm" build_one
- 保证有777权限:chmod 777 build_android.sh,然后执行build_android.sh: ./build_android.sh
- make
- sudo make install
安装其他依赖库
SDL2
1.下载SDL2源码,地址:http://www.libsdl.org/download-2.0.php
2.解压,执行configure,看最后输出结果,检查其他依赖项有没有缺失
其中 libsamplerate 、libudev和dbus是必需的。如果为NO,单独下载并安装这些库。
sudo apt-get install libsamplerate0-dev //libsamplerate
sudo apt-get install libudev-dev //libudev
sudo apt-get install dbus //dbus
sudo apt-get install d-feet //dbus
sudo apt-get install libgtk2.0-dev //dbus
sudo apt-get install libdbus-glib-1-dev //dbus
3.make
4.sudo make install
也可以直接 sudo apt-get install libsdl2-dev 安装
SDL1.2
1.下载SDL1.2源码,地址:http://www.libsdl.org/download-1.2.php
2. 先安装x11支持:sudo apt-get install libX11-dev libXext-dev libXtst-dev libXrender-dev libxmu-dev libxmuu-dev
3. 解压SDL1.2源码,进入源码目录,执行configure:./configure
4. make
5. sudo make install