FFmpeg Mac 编译下载于安装 and Android交叉编译

版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/qq_30889373/article/details/82995724

编译 ffmpeg

这里我们使用是 mac系统,其他系统后面再补充

下载

git clone https://git.ffmpeg.org/ffmpeg.git

帮助

cd ffmpeg
./configure --help | more
cd ffmpeg

安装必备的 yasm

brew install yasm
// 如果安装失败,请使用
sudo chown -R `whoami`:admin /usr/local/bin
sudo chown -R `whoami`:admin /usr/local/share
// 然后再执行安装

ERROR: libfdk_aac not found
查看这篇,也可以直接执行下面命令
https://www.jianshu.com/p/b6ad3b706321

brew install fdk-aac

ERROR: speex not found using pkg-config

brew install speex
brew install pkg-config

ERROR: libx264 not found

brew install x264

ERROR: x265 not found using pkg-config

brew install x265

安装SDL

如果你不安装的话,生成出来的 ffmpeg 没有 ffplay

// 下载
http://www.libsdl.org/release/SDL2-2.0.8.tar.gz
// 解压
tar -zvxf SDL2-2.0.8.tar.gz
// 进入盘
cd /Users/admin/Downloads/SDL2-2.0.8 
// 生成Makefile
./configure --prefix=/usr/local
// 安装
sudo make -j 8 && make install

查看SDL是否安装成功

cd /usr/local/lib
// 查看是否安装成功
ls | grep SDL 

进入 ffmpeg目录 配置

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags=

如果是静态库

./configure --prefix=/usr/local/ffmpeg --pkg-config-flags=--static --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --enable-debug --disable-optimizations --enable-libspeex --enable-videotoolbox --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=clang --host-cflags= --host-ldflags=
// 未测试
--disable-shared --enable-static
// 因为关联的 libx264 这些 都默认动态,所以要删除对应目录文件 只留 .a <静态库>文件

等待等待后
查看文件,确认是否成功

vi Makefile 

编译

sudo make
sudo make  install

查看是否编译成功

/usr/local/ffmpeg/bin/ffmpeg

添加环境变量

 vim ~/.bash_profile 
 // 加入这句
export PATH=$PATH:/usr/local/ffmpeg/bin
// 然后退出vim
wq
// 更新环境变量
source  ~/.bash_profile 
// 命令行中输入测试
ffmpeg

这样就可以直接使用 ffmpeg命令了

记录问题

No package ‘libavformat’ found

# 加入环境
export PKG_CONFIG_PATH="$PATH:/usr/local/ffmpeg/lib/pkgconfig"

Android交叉编译

什么是交叉编译?

在一个平台上编译出另外一个平台上可执行的程序,就是交叉编译

下载ndk

官方地址
https://developer.android.com/ndk/downloads/
我这里使用的是
比较稳定的版本 ndk-r10e
https://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip

// 这里我解压放到这里
/Users/admin/Library/Android/android-ndk-r10e

mac.sh脚本

PREFIX=android-build

#设置你自己的NDK位置
NDK_HOME=/Users/superlea/android-ndk-r10e
#设置你自己的平台,这上Mac上的,linux换成linux-x86_64
NDK_HOST_PLATFORM=darwin-x86_64

COMMON_OPTIONS="\
    --target-os=android \
    --disable-static \
    --enable-shared \
    --enable-small \
    --disable-programs \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-doc \
    --disable-symver \
    --disable-asm \
    "

function build_android {
    ./configure \
    --libdir=${PREFIX}/libs/armeabi-v7a \
    --incdir=${PREFIX}/includes/armeabi-v7a \
    --pkgconfigdir=${PREFIX}/pkgconfig/armeabi-v7a \
    --arch=arm \
    --cpu=armv7-a \
    --cross-prefix="${NDK_HOME}/toolchains/arm-linux-androideabi-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/arm-linux-androideabi-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-arm/" \
    --extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/arm64-v8a \
    --incdir=${PREFIX}/includes/arm64-v8a \
    --pkgconfigdir=${PREFIX}/pkgconfig/arm64-v8a \
    --arch=aarch64 \
    --cpu=armv8-a \
    --cross-prefix="${NDK_HOME}/toolchains/aarch64-linux-android-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/aarch64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-arm64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86 \
    --incdir=${PREFIX}/includes/x86 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86 \
    --arch=x86 \
    --cpu=i686 \
    --cross-prefix="${NDK_HOME}/toolchains/x86-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/i686-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-19/arch-x86/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS} 
    make clean
    make -j8 && make install

    ./configure \
    --libdir=${PREFIX}/libs/x86_64 \
    --incdir=${PREFIX}/includes/x86_64 \
    --pkgconfigdir=${PREFIX}/pkgconfig/x86_64 \
    --arch=x86_64 \
    --cpu=x86_64 \
    --cross-prefix="${NDK_HOME}/toolchains/x86_64-4.9/prebuilt/${NDK_HOST_PLATFORM}/bin/x86_64-linux-android-" \
    --sysroot="${NDK_HOME}/platforms/android-21/arch-x86_64/" \
    --extra-ldexeflags=-pie \
    ${COMMON_OPTIONS}
    make clean
    make -j8 && make install

};

build_android

猜你喜欢

转载自blog.csdn.net/qq_30889373/article/details/82995724