嗨~,大家好!
我叫石头~
mac 上编译FFMpeg4.0.2
亲自测试可以用,可以放心的往下读~~~~
编译环境
选择自己系统对应的ndk
环境变量配置
命令行中配置:
- 输入
vim ~/.bash_profile
或者open ~/.bash_profile
- 加入
// /Users/shitou/Downloads/android-ndk-r16b 换成你自己的r16b的路径
// 命令行进入r16b的文件夹,输入pwd,复制路径
export NDK_HOME=/Users/shitou/Downloads/android-ndk-r16b
export PATH=$PATH:$NDK_HOME/
- 等等还有第三步呢,输入
source ~/.bash_profile
使环境生效
编译脚本
强调下 下面的脚本是没有开启neon跟硬解码的
- 创建一个文件比如
ffmpeg-build.sh
, 复制粘贴下面的内容
记得修改自己的 ndk路径 , 编译之后输入的目录
#!/bin/bash
ADDI_CFLAGS="-marm"
API=27
PLATFORM=arm-linux-androideabi
CPU=armv7-a
NDK=/Users/shitou/Documents/android-ndk-r16b # 修改自己本地的ndk路径
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/darwin-x86_64
OUTPUT=/Users/cvte/Documents/share #自己指定一个输出目录
function build_one
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
echo "开始编译ffmpeg..."
build_one
echo "完成编译..."
-
把
加入脚本文件ffmpeg-build.sh
放入ffmpeg4.0.2
文件夹中
-
修改编译脚本的权限 比如
ffmpeg-build.sh
// 命令行进入ffmpeg4.0.2文件夹
chmod 777 ffmpeg-build.sh
- 执行
./ffmpeg-build.sh
5.编译完成之后会出现:
编译成功会出现
目录所在地:
编译之后的文件夹
好了,到这里应该大家都编译成功了吧.
接下来我们应该是讲怎么导入生成的这些文件进入Android studio,不过先不急,让我们
先说说4.x.x
跟之前3.x.x
的区别,不然等下你用之前的代码第一句就有问题,哈哈~~,先听我唠叨唠叨.
我们可能看之前的博客,第一句代码就是
//注册所有封装器 -- 4.x以上废弃
av_register_all();
结果发现
attribute_deprecated
void av_register_all(void);
与此同时,解码器的注册函数也废弃掉了
//注册所有的解码器 -- 4.x以上废弃
avcodec_register_all();
所有说4.x的版本版本跟3.x还有一些不同的,
这些注册函数都不需要我们手动调用了,组件可以直接用
但是我们怎么查找哪些方法有被废弃,或者被替代呢?
在我们从官网下载下来的ffmpeg4.0.2
文件夹中,找到doc
文件夹,里面有个APIchanges
的文件,用编辑器打开,我们就能发现在这个版本里面的api变更.
现在我们就能对比跟之前的版本,哪些api有变化了.
接下来进入Android studio集成ffmpeg的部分.
网友评论