Yocto ffmpeg 编译

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村里小码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值