1. 下载FFMPEG
http://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2
2. 解压ffmpeg-4.2.2.tar.bz2
$ tar xvjf ffmpeg-4.2.2.tar.bz2
3. 安装yocto工具链
$ mkdir -p ffmpeg-4.2.2/tool_chains
$ ./oecore-x86_64-aarch64-toolchain-nodistro.0.sh -yd /worktemp/ffmpeg-4.2.2/tool_chains
4. 添加编译脚本
#!/bin/bash
set -e
TOP_DIR=${PWD}
PREFIX=$TOP_DIR/out/
source $TOP_DIR/tool_chains/environment-setup-aarch64-poky-linux
GENERAL_64BIT="\
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=aarch64 \
--cpu=cortex-a53
--cc=${CC} \
--cross-prefix=aarch64-poky-linux- \
--nm=aarch64-poky-linux-nm"
GENERAL_32BIT="\
--enable-cross-compile \
--extra-libs="-lgcc" \
--arch=arm \
--cc=arm-linux-gnueabi-gcc \
--cross-prefix=arm-linux-gnueabi- \
--nm=arm-linux-gnueabi-nm"
MODULES="\
--disable-avdevice \
--disable-filters \
--disable-programs \
--disable-network \
--disable-avfilter \
--disable-postproc \
--disable-encoders \
--disable-protocols \
--disable-hwaccels \
--disable-doc"
VIDEO_DECODERS="\
--enable-decoder=h264 \
--enable-decoder=mpeg4 \
--enable-decoder=mpeg2video \
--enable-decoder=mjpeg \
--enable-decoder=mjpegb"
AUDIO_DECODERS="\
--enable-decoder=aac \
--enable-decoder=aac_latm \
--enable-decoder=atrac3 \
--enable-decoder=atrac3p \
--enable-decoder=mp3 \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s8"
DEMUXERS="\
--enable-demuxer=h264 \
--enable-demuxer=m4v \
--enable-demuxer=mpegvideo \
--enable-demuxer=mpegps \
--enable-demuxer=mp3 \
--enable-demuxer=avi \
--enable-demuxer=aac \
--enable-demuxer=pmp \
--enable-demuxer=oma \
--enable-demuxer=pcm_s16le \
--enable-demuxer=pcm_s8 \
--enable-demuxer=wav"
VIDEO_ENCODERS="\
--enable-encoder=huffyuv \
--enable-encoder=ffv1 \
--enable-encoder=mjpeg"
AUDIO_ENCODERS="\
--enable-encoder=pcm_s16le"
MUXERS="\
--enable-muxer=avi"
PARSERS="\
--enable-parser=h264 \
--enable-parser=mpeg4video \
--enable-parser=mpegaudio \
--enable-parser=mpegvideo \
--enable-parser=aac \
--enable-parser=aac_latm"
function build_ARM64
{
./configure --target-os=linux \
--prefix=${PREFIX} \
${GENERAL_64BIT} \
--extra-cflags=" -O3 -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 " \
--disable-shared \
--enable-static \
--enable-zlib \
--disable-everything \
${MODULES} \
${VIDEO_DECODERS} \
${AUDIO_DECODERS} \
${VIDEO_ENCODERS} \
${AUDIO_ENCODERS} \
${DEMUXERS} \
${MUXERS} \
${PARSERS}
make clean
make install
}
build_ARM64
echo Linux ARM builds finished
5. 修改 ffmpeg-4.2.2/tool_chains/environment-setup-aarch64-poky-linux [ffmpeg configure 兼容性]
CC/CXX/CPP 拿掉-mcpu=cortex-a53+crypto -mtune=cortex-a53
#export CC="aarch64-poky-linux-gcc -mcpu=cortex-a53+crypto -mtune=cortex-a53 --sysroot=$SDKTARGETSYSROOT"
#export CXX="aarch64-poky-linux-g++ -mcpu=cortex-a53+crypto -mtune=cortex-a53 --sysroot=$SDKTARGETSYSROOT"
#export CPP="aarch64-poky-linux-gcc -E -mcpu=cortex-a53+crypto -mtune=cortex-a53 --sysroot=$SDKTARGETSYSROOT"
export CC="aarch64-poky-linux-gcc --sysroot=$SDKTARGETSYSROOT"
export CXX="aarch64-poky-linux-g++ --sysroot=$SDKTARGETSYSROOT"
export CPP="aarch64-poky-linux-gcc --sysroot=$SDKTARGETSYSROOT"
6. 执行编译脚本:
$ ./build.sh
如有发现configure 提示错误,可以查看 ffbuild/config.log文件定位问题.
----------------------------------------------------------------------------------------------
EX: //测试
./configure --disable-shared --enable-static --disable-x86asm --prefix=/work1/media/ffmpeg-4.2.2/out