1.ubuntu下编译
下载ffmpeg源码
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
如果只是正常编译的话
./configure --disable-x86asm
make
如果本地编译安装了openssl和x264库的话
//编译支持https--264编码--支持视频水印
./configure --disable-x86asm --enable-openssl --enable-gpl --enable-nonfree --enable-libx264 --enable-libfreetype
//执行编译
make
2.android下编译
这里主要编译android下的so文件。
1.克隆代码
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
2.在ffmpeg文件夹下新建一个文件android_build.sh
内容如下
#!/bin/bash
make clean
#这里修改为你的ndk的路径
export NDK=/home/hxk/software/android-ndk-r10e
#注意android-9文件夹的版本号,替换好自己的版本号。下面的路径同理
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
#编译出来后支持的格式
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"
./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
3.修改configure文件,不修改的话编译不过
这里是指定打包后的名字,不修改的话,编译出来的版本如下libavcodec.so.56 Android下面是不认的。因此需要修改一下
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
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_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'
运行脚本
./android_build.sh
4.编译
修改修改ffmpeg中的代码,然后直接
make
就可以编译我们改动的地方了
然后输入命令行,就可以看到改动了
如果中间出现编译失败了,记得make clean 再make
完整编译
https://www.cnblogs.com/zjoch/archive/2013/05/16/3082002.html
编译SDL,生成ffplay
http://blog.csdn.net/huanghai381/article/details/51777446
https://blog.csdn.net/mao0514/article/details/51330014
sdl编译:
下载SDL2
http://www.libsdl.org/download-2.0.php
下载后解压缩
./configure --prefix=/usr/local//如果不指定,不能启动虚拟机音频,会导致无声音
make
sudo make install
这样就安装好了SDL。
接下来重新安装一下ffmpeg后就可以看到ffplay了。
部分会出现:
ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No
部分机子的so是在这个目录下,和上面链接不一样 //usr/lib
5.找so文件
在ffmpeg文件夹下新生成的android/arm/lib