网上有很多博客介绍ubuntu编译ffmpeg,但我还是决定按照自己亲身实践来讲述一篇,第一、便于自己下回有章可循;第二、把遇到的问题与解决的方式总结成套路。Let‘s go!
(1)、准备工具:ffmpeg-2.2.16.tar.gz,http://ffmpeg.org/,点击打开链接
android-ndk-r13b-linux-x86_64.zip,https://developer.android.com/ndk/downloads/index.html点击打开链接
(2)、好吧,谷歌链接如果打开不了,我们需要穿墙或者配置hosts,大家可以百度下具体方法。
我这里将ffmpeg与ndk解压到ubuntu的Downloas目录下,在终端命令里cd到Downloads下,使用:tar -zxvf xxxxxxx.zip xxxxxxxxx.tar.gz执行,见下图:
(3)、现在,我们操作终端命令,cd~/Downloads/ffmpeg-2.2.16
然后:vi ./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)'这里,当使用vi打开configure 文件后,在命令模式下使用/xxx命令进行查找,查找到的语句依次向下三行(包括本行共四行)就分别对应了目标,我们在插入模式进行修改或者删除粘贴均可,这里不做累赘讲述;
(4)、下来要进行的才是重中之重,先vi一个android_arm.sh :vi ./android_arm.sh,然后在里面键入:
#!/bin/bash export TMPDIR=/home/su/Downloads/android_ffmpeg export NDK=/home/su/Downloads/android-ndk-r13b export SYSROOT=$NDK/platforms/android-16/arch-arm/ export TOOLCHAIN=/home/su/Downloads/android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 export cpu=arm export PREFIX=/home/su/Downloads/arm export ADDI_CFLAGS="-marm" function build_one { ./configure \ --prefix=$PREFIX \ --extra-libs=-lgcc \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-doc \ --disable-symver \ --enable-small \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install } build_one
为了防止后面出现不能编译成可执行文件的错误,切记三点:
1、使用路径与名称要与自己电脑设置完全匹配,是正确的;
2、使用export 万一要被外面引用:
export TMPDIR=/home/su/Downloads/android_ffmpeg export NDK=/home/su/Downloads/android-ndk-r13b export SYSROOT=$NDK/platforms/android-16/arch-arm/ export TOOLCHAIN=/home/su/Downloads/android-ndk-r13b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 export cpu=arm export PREFIX=/home/su/Downloads/arm export ADDI_CFLAGS="-marm"3、预先在Downloas文件夹下建立android_ffmpeg目录与arm目录;
(5)好了,我们来给两个文本加权限吧:
chmod +x configure
chmod +xandroid_arm.sh
(6)再执行:./configure waiting....(这个很快)
这里如果出现yasm之类过旧的提示,你使用:sudo apt-get install yasm安装即可
(7)然后:sudo ./android_arm.sh(sudo在这里是为了进入系统usr这种目录可以读写)
如果不出现问题,那么等待10分钟吧!编译好后,你进入arm目录(在Downloads下)里面有include与lib目录,这就是想要的动态库,里面的链接可以删除,你使用ls -l可以明显查看。
that's all!就记录到这吧!