mac环境下编译FFmpeg

简介

学习FFmpeg避免不了要学习。ffmpeg和ffmprobe两个核心的可执行程序,而应用在移动端必不可少的需要编译成Android可以使用的so库。本文主要介绍在mac上的FFmpeg的编译
分为两部分

  1. 编译为mac环境
  2. 编译为Android so库

1 FFmpeg编译为mac环境

如果没有安装yasm的话,会报

FFmpeg yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild

1.1.1 下载YASM

YASM下载

1.1.2 进入yasm目录

//第一步
cd ~/yasm-1.3.0


//第二步 配置
./configure


//第三步 编译
make

//第四步 安装
sudo make install

至此 YASM安装完毕

安装SDL

下载安装

1.2.1 进入sdl目录

//第一步
 cd ~/SDL2-2.0.8

//第二步
./configure

//第三步 编译
make -j 16

//第四步
sudo make install

1.3. 安装FFmpeg

去官方找个想要的版本

1.3.1 安装过程


//第一步 进入下载目录
$ cd ~/ffmpeg

//第二步 配置
//这里很关键,需要根据不同的配置来进行生产不同的ffmpeg

./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --enable-shared --disable-static


第三步 编译
make -j 4 

第四步 安装
sudo make install

1.3.2 配置环境变量

//第一步
vi ~/.bash_profile
//第二步
export PATH="$PATH:/usr/local/ffmpeg/bin"
//第三步
source ~/.bash_profile

命令行 ffmpeg 成功

2. 编译成android 库

2.1 官网下载ffmpeg

我下载的4.1版本

2.2 下载NDK

不能使用Android studio 的NDK 。我用的17r

2.3 添加脚本

在ffmpeg解压后的根目录下 新建一个android_build.sh 文件

修改ndk和输出目录就好

#!/bin/bash

ADDI_CFLAGS="-marm"
API=19
PLATFORM=arm-linux-androideabi
CPU=x86_64 # 'armeabi-v7a' 'x86_64'
NDK=/Users/yinzelin/ndk/android-ndk-r17c # 修改成自己本地的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/yinzelin/ffmpeg/ProgramFiles #自己指定一个输出目录,用来放生成的文件的。
function build
{
echo "开始编译ffmpeg"

./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=armeabi-v7a \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
  make clean
  # 这里是定义用几个CPU编译,我用4个,一般在5分钟之内编译完成
  make -j4
  make install

echo "编译结束!"
}

build

2.4 修改配置 为android

打开ffmpeg根目录 修改.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)'

2.5 执行脚本

./build_android.sh

在输出目录结果

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值