Android使用FFmpeg(一)--编译ffmpeg
关于
Android使用FFmpeg(一)--编译ffmpeg
Android使用FFmpeg(二)--Android Studio配置ffmpeg
Android使用FFmpeg(三)--ffmpeg实现视频播放
Android使用FFmpeg(四)--ffmpeg实现音频播放(使用AudioTrack进行播放)
Android使用FFmpeg(五)--ffmpeg实现音频播放(使用openSL ES进行播放)
Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
Android使用FFmpeg(七)--ffmpeg实现暂停、快退快进播放
前言
ffmpeg简介
在现今这个阶段,越来越多的app会涉及到音视频,那么学会使用ffmpeg就很有必要了。在这个系类中将讲解如何把ffmpeg编译成动态库,以及使用ffmpeg实现音视频播放和音视频的采集。
编译环境
Linux/Ubuntu/centos都行
在windows环境下可以安装虚拟机或者购买一个云主机,作者在金山云购买的一个Ubuntu主机。
准备工作
下载配置ndk,下载ffmpeg并解压。
开始
配置ndk
如果你已经配置ok,请跳过这一步。
我们打开自己的虚拟机或者云服务器并且获取到root权限。创建文件夹ndk_build并进入到文件夹中,下载ndk,并解压
mkdir ndk_build//新建文件夹cd ndk_build//进入到文件夹wget +linux版本的下载链接地址//下载ndkunzip + 压缩文件//解压
配置ndk
vim ~/.bashrc//进入环境变量配置export NDKROOT=/home/ndk_build/android-ndk-r14b//配置你的安装路径export PATH=$NDKROOT:$PATH//配置路径:wq!//保存退出source ~/.bashrc//执行环境变量ndk-build//查看是否安装成功,只要不是显示ndk-build not found,则表示安装成功
下载编译ffmpeg
下载ffmpeg并解压
下载ffmpeg并解压.png
wget http://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gztar -xzf ffmpeg-2.6.9.tar.gz
修改configure文件并新建android_build.sh文件,编辑android_build.sh
#!/bin/bashmake cleanexport NDK=/home/ndk_build/android-ndk-r14bexport SYSROOT=$NDK/platforms/android-9/arch-arm/export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64export CPU=armexport PREFIX=$(pwd)/android/$CPUexport 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_FLAGmake cleanmakemake install
其中NDK是你自己刚刚配置的ndk路径,SYSROOT为platforms中的路径,TOOLCHAIN为toolchains里面中的路径,依次配置好过后保存并退出。
修改configure,如果你不修改的话,编译出来过后的.so文件后面会有一串数字,无法使用,所以得修改他的命名规则。
将该文件中的如下四行:
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)'
编译.sh文件
···
./android_build.sh
···
当编译成功过后会在文件夹中出现android文件夹,
在lib文件夹中就有你需要的.so文件了
.so文件.png
这样就差不多编译完成,如果你需要编译一份别人已经编译过的ffmpeg,那么请先执行./confifure --disable-yasm,然后再自己编译。
如果还没编译好但是急需的朋友可以直接下载使用。
.so下载地址
更多相关文章
- Ubuntu10.04 32位编译Android(安卓)4.0源码
- Android系统在超级终端下必会的命令大全(adb shell命令大全)
- 强制 Android(安卓)应用使用某个 Locale语言
- Android定时器的使用,
- Android常用动画alpha和rotate同时使用
- 创建 cocos2d-x+lua for android 步骤
- Android(安卓)XML文件解析
- Android下使用Socket连接网络电脑
- RK3326 Android(安卓)8.1 为自己的APK的服务默认开启无障碍权限,