Mac 编译FFmpeg

一.ndk配置:

下载ndk-r16b:https://blog.csdn.net/gyh198/article/details/75036686

 本来下载最新的ndk-r19c的但是运行不起来,出现bug:

1.拷贝到Mac的Library文件夹中:cp -r ../Download/ndk+版本  ./ndk+版本

大家可以不拷贝到Librarry文件夹中,我是习惯把工具拷到library目录下。

2.配置系统全局运行环境:vim ~/.bash_profile

1. PATH="/Users/****/Library/android-ndk-r16b:${PATH}"

   export PATH


2. export NDK_HOME=/Users/****/Library/android-ndk-r16b

   export PATH=$PATH:$NDK_HOME/

2.ffmpeg下载

下载地址:http://ffmpeg.org

git下载:https://github.com/FFmpeg/FFmpeg.git

3.脚本编写

sh build_x264.sh

export NDK=/Users/dawn/Library/android-ndk-r16b
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
export PLATFORM=$NDK/platforms/android-27/arch-arm
export SYSROOT=$TOOLCHAIN/sysroot/
export PREFIX=../liboutput #编译结果的目录 最终生成的编译结果

# 加入x264编译库
EXTRA_CFLAGS="-I./libx264/include" 
EXTRA_LDFLAGS="-L./libx264/lib"


./configure \
    --target-os=linux \
    --prefix=$PREFIX \
    --enable-cross-compile \
    --enable-runtime-cpudetect \
    --disable-asm \
    --disable-doc \
    --arch=arm \
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --disable-stripping \
    --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
    --sysroot=$PLATFORM \
    --enable-gpl \
    --enable-static \
    --disable-shared \
    --enable-version3 \
    --enable-small \
    --disable-vda \
    --disable-iconv \
    --disable-encoders \
    --enable-libx264 \
    --enable-encoder=libx264 \
    --disable-muxers \
    --enable-muxer=mov \
    --enable-muxer=ipod \
    --enable-muxer=psp \
    --enable-muxer=mp4 \
    --enable-muxer=avi \
    --disable-decoders \
    --enable-decoder=aac \
    --enable-decoder=aac_latm \
    --enable-decoder=h264 \
    --enable-decoder=mpeg4 \
    --disable-demuxers \
    --enable-demuxer=h264 \
    --enable-demuxer=mov \
    --disable-parsers \
    --enable-parser=aac \
    --enable-parser=ac3 \
    --enable-parser=h264 \
    --disable-protocols \
    --enable-protocol=file \
    --enable-protocol=rtmp \
    --disable-bsfs \
    --enable-bsf=aac_adtstoasc \
    --enable-bsf=h264_mp4toannexb \
    --disable-indevs \
    --enable-zlib \
    --disable-outdevs \
    --disable-ffprobe \
    --disable-ffplay \
    --disable-ffmpeg \
    --disable-ffserver \
    --disable-debug \
    --extra-cflags=$EXTRA_CFLAGS \
    --extra-ldflags=$EXTRA_LDFLAGS


make clean 
make -j8
make install

# 这段解释见后文
$TOOLCHAIN/bin/arm-linux-androideabi-ld -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib -soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o $PREFIX/libffmpeg.so \
    android-lib/lib/libx264.a \
    libavcodec/libavcodec.a \
    libavfilter/libavfilter.a \
    libswresample/libswresample.a \
    libavformat/libavformat.a \
    libavutil/libavutil.a \
    libswscale/libswscale.a \
    libpostproc/libpostproc.a \
    libavdevice/libavdevice.a \
    -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker $TOOLCHAIN/lib/gcc/arm-linux- androideabi/4.9/libgcc.a 

4.运行权限设置

chmod -R 777 build.sh 

./build.sh

猜你喜欢

转载自blog.csdn.net/MatrixMind/article/details/88987628