FFmpeg 交叉编译libx264、libx265、libfdk-aac流程

本文详细介绍了FFmpeg交叉编译过程中针对libx264、libx265和libfdk-aac的步骤,包括下载库、修改编译脚本以及执行编译命令,是音视频开发者入门FFmpeg交叉编译的基础教程。

背景

FFmpeg 是一款强大的音视频处理工具,它是一种可插拔的架构设计。当需要使用某个编解码器、容器格式、网络协议时,只需要在编译文件中打开、配置,就可以在FFmpeg中使用。在播放器、推流器、视频编辑中经常都会使用到FFmpeg交叉编译第三方库,FFmpeg交叉编译第三方库可以说是音视频入门的基础知识,也是最重要的。通过学习了交叉编译的过程,加深对FFmpeg架构的设计。

编译第三方库

FFmpeg 最常使用的第三方库就是libx264、libx265、libfdk-aac。这里就介绍下libx264、libx265、libfdk-aac的流程。

libx264编译

  1. 下载libx264库
    可以在VideoLan下载libx264库。
  2. 编译脚本
    armv7a编译脚本:
#!/bin/bash
NDK=/Users/zhangjunling/Library/Android/sdk/ndk/android-ndk-r10d
export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64
export CC="$PREBUILT/bin/arm-linux-androideabi-gcc --sysroot=${PLATFORM} -march=armv7-a"
export LD="$PREBUILT/bin/arm-linux-androideabi-ld"
export AS="$PREBUILT/bin/arm-linux-androideabi-gcc"
export AR="$PREBUILT/bin/arm-linux-androideabi-ar"
export RANLIB="$PREBUILT/bin/arm-linux-androideabi-ranlib"
export PLATFORM=$NDK/platforms/android-9/arch-arm 
export PREFIX=/Users/zhangjunling/study/CrossCompileTest/thirdparty/libx264/armv7a/
export PATH=$PATH:$PREBUILT/bin:$PLATFORM/usr/include:

./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--enable-strip \
--disable-cli \
--disable-asm \
--extra-cflags= "-march=armv7-a  -mfloat-abi=softfp -mfpu=neon" \
--host=arm-linux \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--sysroot=$PLATFORM

make clean
make -j8
make install

arm64-v8a编译脚本:

#!/bin/bash
NDK=/Users/zhangjunling/Library/Android/sdk/ndk/android-ndk-r10d
PLATFORM=$NDK/platforms/android-21/arch-arm64
export PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64
export CC="$PREBUILT/bin/aarch64-linux-android-gcc --sysroot=${PLATFORM} -march=armv8-a"
export CXX="$PREBUILT/bin/aarch64-linux-android-g++ --sysroot=${PLATFORM}"
export LD="$PREBUILT/bin/aarch64-linux-android-ld"
export AS="$PREBUILT/bin/aarch64-linux-android-gcc"
export AR="$PREBUILT/bin/aarch64-linux-android-ar"
export RANLIB="$PREBUILT/bin/aarch64-linux-android-ranlib"
export PREFIX=/Users/zhangjunling/study/CrossCompileTest/thirdparty/libx264/arm64-v8a
export PATH=$PATH:$PREBUILT/bin:$PLATFORM/usr/include:

./configure --prefix=$PREFIX \
--enable-static \
--enable-pic \
--enable-strip \
--disable-cli \
--disable-asm \
--extra-cflags= "-march=armv8-a  -mfloat-abi=softfp -mfpu=neon" \
--host=arm-linux \
--cross-prefix=$PREBUILT/bin/aarch64-linux-android- \
--sysroot=$PLATFORM

make clean
make -j8
make install

libx265 编译

  1. 下载libx265库
    libx265库下载地址
  2. 修改编译脚本
    aarch64-linux/crosscompile.cmake

# CMake toolchain file for cross compiling x265 for ARM arch
# This feature is only supported as experimental. Use with caution.
# Please report bugs on bitbucket
# Run cmake with: cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source

set(CMAKE_SYSTEM_NAME Android)

#此处设置Android的API版本
set(CMAKE_ANDROID_API 21)

#此处设置Android的ABI,如armeabi、armeabi-v7a、x86等
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)

#此处设置Android的NDK路径
set(CMAKE_ANDROID_NDK "/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d")

#此处设置Android的系统目录,与ABI相关,如$NDK/platforms/android-9/arch-arm、/platforms/android-9/arch-x86
set(CMAKE_SYSROOT "/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d/platforms/android-21/arch-arm64")

set(CMAKE_ANDROID_STL_TYPE "gnustl_static")
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 11)

include_directories(../../source)

arm-linux/crosscompile.cmake

# CMake toolchain file for cross compiling x265 for ARM arch
# This feature is only supported as experimental. Use with caution.
# Please report bugs on bitbucket
# Run cmake with: cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source

set(CMAKE_SYSTEM_NAME Android)

#此处设置Android的API版本
set(CMAKE_ANDROID_API 21)

#此处设置Android的ABI,如armeabi、armeabi-v7a、x86等
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)

#此处设置Android的NDK路径
set(CMAKE_ANDROID_NDK "/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d")

#此处设置Android的系统目录,与ABI相关,如$NDK/platforms/android-9/arch-arm、/platforms/android-9/arch-x86
set(CMAKE_SYSROOT "/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d/platforms/android-21/arch-arm")

set(CMAKE_ANDROID_STL_TYPE "gnustl_static")
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_STANDARD 11)

include_directories(../../source)

3.修改x265/source/CMakeLists.txt
去掉-lphread

4.执行配置命令

cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" ../../source && ccmake ../../source

5.执行make开始编译

make

libfdk-aac编译

  1. libfdk-aac下载
    从这里下载libfdk-aac。
  2. 编译脚本
    armv7a编译脚本:
#!/bin/bash

NDK=/Users/zhangjunling/Library/Android/sdk/ndk/android-ndk-r10d
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64
PLATFORM=$NDK/platforms/android-9/arch-arm
export PATH=$PATH:$PREBUILT/bin:$PLATFORM/usr/include:

#export LDFLAGS="-nostdlib -Bdynamic -Wl,--whole-archive -Wl,--no-undefined -Wl,-z,noexecstack  -Wl,-z,nocopyreloc -Wl,-soname,/system/lib/libz.so -Wl,-rpath-link=$ARM_LIB,-dynamic-linker=/system/bin/linker -L$PLATFORM/usr/lib -L$PREBUILT/arm-linux-androideabi/lib -L$NDK/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi -lgnustl_static -L$NDK/sources/cxx-stl/stlport/libs/armeabi -lstlport_static -lc -lgcc -lm -ldl "
#export CFLAGS="-I$NDK/sources/cxx-stl/gnu-libstdc++/4.6/include -I$NDK/sources/cxx-stl/stlport/stlport -I$PLATFORM/usr/include -fpic -DANDROID -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID  -Wa,--noexecstack -MMD -MP"
export LDFLAGS="-L$PLATFORM/usr/lib -L$PREBUILT/arm-linux-androideabi/lib -march=armv7-a -O3"
export CFLAGS="-I$PLATFORM/usr/include -march=armv7-a -O3"

export CPPFLAGS="$CFLAGS"
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="$LDFLAGS"

export AS=$PREBUILT/bin/arm-linux-androideabi-as
export LD=$PREBUILT/bin/arm-linux-androideabi-ld
export CXX="$PREBUILT/bin/arm-linux-androideabi-g++ --sysroot=${PLATFORM}"
export CC="$PREBUILT/bin/arm-linux-androideabi-gcc --sysroot=${PLATFORM} -march=armv7-a "
export NM=$PREBUILT/bin/arm-linux-androideabi-nm
export STRIP=$PREBUILT/bin/arm-linux-androideabi-strip
export RANLIB=$PREBUILT/bin/arm-linux-androideabi-ranlib
export AR=$PREBUILT/bin/arm-linux-androideabi-ar

./configure --host=arm-linux \
--disable-shared \
--disable-frontend \
--enable-static \
--with-sysroot=${PLATFORM} \
--prefix=/Users/zhangjunling/study/CrossCompileTest/thirdparty/fdk-aac/armv7a/

make clean
make -j8
make install 

arm64-v8a编译脚本:

#!/bin/bash
#Type Your NDK Root Path
NDK=/Users/zhangjunling/Library/Android/sdk/ndk/android-ndk-r10d
PREBUILT=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64
PLATFORM=$NDK/platforms/android-21/arch-arm64
export PATH=$PATH:$PREBUILT/bin:$PLATFORM/usr/include:

#export LDFLAGS="-nostdlib -Bdynamic -Wl,--whole-archive -Wl,--no-undefined -Wl,-z,noexecstack  -Wl,-z,nocopyreloc -Wl,-soname,/system/lib/libz.so -Wl,-rpath-link=$ARM_LIB,-dynamic-linker=/system/bin/linker -L$PLATFORM/usr/lib -L$PREBUILT/arm-linux-androideabi/lib -L$NDK/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi -lgnustl_static -L$NDK/sources/cxx-stl/stlport/libs/armeabi -lstlport_static -lc -lgcc -lm -ldl "
#export CFLAGS="-I$NDK/sources/cxx-stl/gnu-libstdc++/4.6/include -I$NDK/sources/cxx-stl/stlport/stlport -I$PLATFORM/usr/include -fpic -DANDROID -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__  -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID  -Wa,--noexecstack -MMD -MP"

export LDFLAGS="-L$PLATFORM/usr/lib  -O3"
export CFLAGS="-I$PLATFORM/usr/include -O3"

export CPPFLAGS="$CFLAGS"
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export LDFLAGS="$LDFLAGS"

export AS=$PREBUILT/bin/aarch64-linux-android-as
export LD=$PREBUILT/bin/aarch64-linux-android-ld
export CXX="$PREBUILT/bin/aarch64-linux-android-g++ --sysroot=${PLATFORM}"
export CC="$PREBUILT/bin/aarch64-linux-android-gcc --sysroot=${PLATFORM}"
export NM=$PREBUILT/bin/aarch64-linux-android-nm
export STRIP=$PREBUILT/bin/aarch64-linux-android-strip
export RANLIB=$PREBUILT/bin/aarch64-linux-android-ranlib
export AR=$PREBUILT/bin/aarch64-linux-android-ar

./configure --host=aarch64-linux \
--target=android \
--enable-static \
--disable-shared \
--with-sysroot=${PLATFORM} \
--prefix=/Users/zhangjunling/study/CrossCompileTest/thirdparty/fdk-aac/arm64-v8a/


make clean
make -j8
make install

FFmpeg的交叉编译

armv7a编译脚本:

#!/bin/bash
NDK_HOME=/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d
PROJECT_PATH=`pwd`
echo $PROJECT_PATH
ANDROID_NDK_ROOT=$NDK_HOME
PREBUILT=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
PLATFORM=$ANDROID_NDK_ROOT/platforms/android-21/arch-arm
PREFIX=/Users/zhangjunling/study/CrossCompileTest/ffmpeg_source/out/armv7a
CROSS_COMPILE_PATH=/Users/zhangjunling/study/CrossCompileTest/ffmpeg_android-libx265-ipv6/external_libs/cross-compile-sdk

CFLAGS="-O3 -Wall -pipe \
    -std=c99 \
    -ffast-math \
    -fstrict-aliasing -Werror=strict-aliasing \
    -Wno-psabi -Wa,--noexecstack \
    -DANDROID -DNDEBUG"

EXTRA_CFLAGS=" -O3 "
LDFLAGS=""
CXXFLAGS=""

HOST_PKG_CONFIG_PATH=`command -v pkg-config`
if [ -z ${HOST_PKG_CONFIG_PATH} ]; then
    echo -e "(*) pkg-config command not found\n"
    exit 1
fi

#echo HOST_PKG_CONFIG_PATH

export PKG_CONFIG_PATH="/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/libx265/armv7a/lib/pkgconfig/:/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/fdk-aac/armv7a/lib/pkgconfig/:/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/libx264/armv7a/lib/pkgconfig/:$PKG_CONFIG_PATH"

CFLAGS+=" -march=armv7-a -I$PLATFORM/usr/include -I$CROSS_COMPILE_PATH/fdk-aac/armv7a/include -I$CROSS_COMPILE_PATH/libx264/armv7a/include -I$CROSS_COMPILE_PATH/libx265/armv7a/include"
LDFLAGS+=" -march=armv7-a -L$PLATFORM/usr/lib  -L$CROSS_COMPILE_PATH/fdk-aac/armv7a/lib -L$CROSS_COMPILE_PATH/libx264/armv7a/lib -L$CROSS_COMPILE_PATH/libx265/armv7a/lib"

CFLAGS+=" $(pkg-config --cflags x265)"
LDFLAGS+=" $(pkg-config --libs --static x265)"

CFLAGS+=" $(pkg-config --cflags x264)"
LDFLAGS+=" $(pkg-config --libs --static x264)"

CFLAGS+=" $(pkg-config --cflags fdk-aac)"
LDFLAGS+=" $(pkg-config --libs --static fdk-aac)"

export CFLAGS="${CFLAGS}"
export CXXFLAGS="${CXXFLAGS}"
export LDFLAGS="${LDFLAGS}"
export EXTRA_CFLAGS="${EXTRA_CFLAGS}"

./configure \
--target-os=android \
--arch=arm \
--enable-gpl \
--disable-shared \
--disable-stripping \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-avdevice \
--disable-indevs \
--disable-devices \
--disable-debug \
--disable-asm \
--disable-yasm \
--disable-doc \
--disable-bsfs \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-indevs \
--disable-outdevs \
--enable-cross-compile \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--enable-filter=aresample \
--enable-bsf=aac_adtstoasc \
--enable-bsf=h264_mp4toannexb \
--enable-small \
--enable-dct \
--enable-dwt \
--enable-lsp \
--enable-mdct \
--enable-rdft \
--enable-fft \
--enable-static \
--enable-version3 \
--enable-nonfree \
--disable-encoders \
--enable-encoder=pcm_s16le \
--enable-encoder=aac \
--enable-encoder=libfdk_aac \
--enable-encoder=libx264 \
--enable-encoder=libx265 \
--enable-encoder=mp2 \
--disable-decoders \
--disable-parsers \
--enable-parser=aac  \
--enable-parser=h264  \
--enable-parser=hevc  \
--disable-muxers \
--enable-muxer=flv \
--enable-muxer=mp4 \
--enable-muxer=h264 \
--enable-muxer=hevc \
--enable-muxer=wav \
--enable-muxer=adts \
--disable-demuxers \
--disable-protocols \
--enable-protocol=rtmp \
--enable-protocol=file \
--enable-protocol=http \
--disable-filters \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk_aac \
--sysroot=$PLATFORM \
--extra-libs="$(pkg-config --libs --static) -L/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/ -lgnustl_static" \
--pkg-config="${HOST_PKG_CONFIG_PATH}" \
--prefix=$PREFIX

echo $PREFIX

make clean
make -j8
make install

#FFMPEG_RTMP_OPTIONS="--enable-protocol=librtmp --enable-protocol=librtmpe --enable-protocol=librtmps --enable-protocol=librtmpt --enable-protocol=librtmpte --enable-librtmp"
#FFMPEG的可选编译参数 用于选择RTMP推流使用的库 默认使用LIBRTMP并支持RTMP RTMPT RTMPE RTMPTE RTMPS协议
#RTMP推流库选择参数:
#要使用LIBRTMP(支持RTMP RTMPT RTMPE RTMPTE RTMPS协议)需要加参数 --enable-protocol=librtmp --enable-protocol=librtmpe --enable-protocol=librtmps --enable-protocol=librtmpt --enable-protocol=librtmpte --enable-librtmp
#要使用FFMPEG NATIVE RTMP(仅支持RTMP协议)需要加参数 --enable-protocol=rtmp
#LIBRTMP与FFMPEG NATIVE RTMP只能选择其中一种 同时加两种参数时会使用LIBRTMP 建议按需要选择

arm64-v8a编译脚本:

#!/bin/bash
NDK_HOME=/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d

ANDROID_NDK_ROOT=$NDK_HOME
PREBUILT=$ANDROID_NDK_ROOT/toolchains/aarch64-linux-android-4.9/prebuilt/darwin-x86_64
PLATFORM=$ANDROID_NDK_ROOT/platforms/android-21/arch-arm64
PREFIX=/Users/zhangjunling/study/CrossCompileTest/ffmpeg_source/out/arm64-v8a
CROSS_COMPILE_PATH=/Users/zhangjunling/study/CrossCompileTest/ffmpeg_android-libx265-ipv6/external_libs/cross-compile-sdk

CFLAGS="-O3 -Wall -pipe \
    -std=c99 \
    -ffast-math \
    -fstrict-aliasing -Werror=strict-aliasing \
    -Wno-psabi -Wa,--noexecstack \
    -DANDROID -DNDEBUG"

EXTRA_CFLAGS="-march=armv8-a -DANDROID -D__ARM_ARCH_8__ -D__ARM_ARCH_8A__ -D__ARM_NEON__ -O3"
LDFLAGS=""
CXXFLAGS=""

HOST_PKG_CONFIG_PATH=`command -v pkg-config`
if [ -z ${HOST_PKG_CONFIG_PATH} ]; then
    echo -e "(*) pkg-config command not found\n"
    exit 1
fi

#echo HOST_PKG_CONFIG_PATH

export PKG_CONFIG_PATH="/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/libx265/arm64-v8a/lib/pkgconfig/:/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/fdk-aac/arm64-v8a/lib/pkgconfig/:/Users/zhangjunling/study/CrossCompileTest/ffmpeg_2.8.5_android-libx265-ipv6/external_libs/cross-compile-sdk/libx264/arm64-v8a/lib/pkgconfig/:$PKG_CONFIG_PATH"

CFLAGS+=" -I$PLATFORM/usr/include -I$CROSS_COMPILE_PATH/fdk-aac/arm64-v8a/include -I$CROSS_COMPILE_PATH/libx264/arm64-v8a/include -I$CROSS_COMPILE_PATH/libx265/arm64-v8a/include"
LDFLAGS+=" -L$PLATFORM/usr/lib  -L$CROSS_COMPILE_PATH/fdk-aac/arm64-v8a/lib -L$CROSS_COMPILE_PATH/libx264/arm64-v8a/lib -L$CROSS_COMPILE_PATH/libx265/arm64-v8a/lib"

CFLAGS+=" $(pkg-config --cflags x265)"
LDFLAGS+=" $(pkg-config --libs --static x265)"

CFLAGS+=" $(pkg-config --cflags x264)"
LDFLAGS+=" $(pkg-config --libs --static x264)"

CFLAGS+=" $(pkg-config --cflags fdk-aac)"
LDFLAGS+=" $(pkg-config --libs --static fdk-aac)"

export CFLAGS="${CFLAGS}"
export CXXFLAGS="${CXXFLAGS}"
export LDFLAGS="${LDFLAGS}"
export EXTRA_CFLAGS="${EXTRA_CFLAGS}"

./configure \
--target-os=android \
--arch=aarch64 \
--enable-gpl \
--disable-shared \
--disable-stripping \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-avdevice \
--disable-indevs \
--disable-devices \
--disable-debug \
--disable-asm \
--disable-yasm \
--disable-doc \
--disable-bsfs \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-indevs \
--disable-outdevs \
--enable-cross-compile \
--cross-prefix=$PREBUILT/bin/aarch64-linux-android- \
--cc=$PREBUILT/bin/aarch64-linux-android-gcc \
--nm=$PREBUILT/bin/aarch64-linux-android-nm \
--enable-filter=aresample \
--enable-bsf=aac_adtstoasc \
--enable-bsf=h264_mp4toannexb \
--enable-small \
--enable-dct \
--enable-dwt \
--enable-lsp \
--enable-mdct \
--enable-rdft \
--enable-fft \
--enable-static \
--enable-version3 \
--enable-nonfree \
--disable-encoders \
--enable-encoder=pcm_s16le \
--enable-encoder=aac \
--enable-encoder=libfdk_aac \
--enable-encoder=libx264 \
--enable-encoder=libx265 \
--enable-encoder=mp2 \
--disable-decoders \
--disable-parsers \
--enable-parser=aac  \
--enable-parser=h264  \
--enable-parser=hevc  \
--disable-muxers \
--enable-muxer=flv \
--enable-muxer=mp4 \
--enable-muxer=h264 \
--enable-muxer=hevc \
--enable-muxer=wav \
--enable-muxer=adts \
--disable-demuxers \
--disable-protocols \
--enable-protocol=rtmp \
--enable-protocol=file \
--enable-protocol=http \
--disable-filters \
--enable-libx264 \
--enable-libx265 \
--enable-libfdk_aac \
--sysroot=$PLATFORM \
--extra-libs="$(pkg-config --libs --static) -L/Users/zhangjunling/Library/Android/sdk/ndk_zjl/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/libs/arm64-v8a/ -lgnustl_static" \
--pkg-config="${HOST_PKG_CONFIG_PATH}" \
--prefix=$PREFIX

echo $PREFIX

make clean
make -j4
make install

#FFMPEG_RTMP_OPTIONS="--enable-protocol=librtmp --enable-protocol=librtmpe --enable-protocol=librtmps --enable-protocol=librtmpt --enable-protocol=librtmpte --enable-librtmp"
#FFMPEG的可选编译参数 用于选择RTMP推流使用的库 默认使用LIBRTMP并支持RTMP RTMPT RTMPE RTMPTE RTMPS协议
#RTMP推流库选择参数:
#要使用LIBRTMP(支持RTMP RTMPT RTMPE RTMPTE RTMPS协议)需要加参数 --enable-protocol=librtmp --enable-protocol=librtmpe --enable-protocol=librtmps --enable-protocol=librtmpt --enable-protocol=librtmpte --enable-librtmp
#要使用FFMPEG NATIVE RTMP(仅支持RTMP协议)需要加参数 --enable-protocol=rtmp
#LIBRTMP与FFMPEG NATIVE RTMP只能选择其中一种 同时加两种参数时会使用LIBRTMP 建议按需要选择


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值