ffmpeg系列-编译

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

ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file: No 问题处理

部分机子的so是在这个目录下,和上面链接不一样 //usr/lib

5.找so文件
在ffmpeg文件夹下新生成的android/arm/lib

image

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值