ffmpeg 编译

配置

帮助  >> ./configure -h (切换到ffmpeg根目录)

   列举功能支持项 (Help options)

  --help                   print this message
  --quiet                  Suppress showing informative output
  --list-decoders          show all available decoders
  --list-encoders          show all available encoders
  --list-hwaccels          show all available hardware accelerators
  --list-demuxers          show all available demuxers
  --list-muxers            show all available muxers
  --list-parsers           show all available parsers
  --list-protocols         show all available protocols
  --list-bsfs              show all available bitstream filters
  --list-indevs            show all available input devices
  --list-outdevs           show all available output devices
  --list-filters           show all available filters

  配置功能支持项 (Individual component options)

  --disable-everything     disable all components listed below
  --disable-encoder=NAME   disable encoder NAME
  --enable-encoder=NAME    enable encoder NAME
  --disable-encoders       disable all encoders
  --disable-decoder=NAME   disable decoder NAME
  --enable-decoder=NAME    enable decoder NAME
  --disable-decoders       disable all decoders
  --disable-hwaccel=NAME   disable hwaccel NAME
  --enable-hwaccel=NAME    enable hwaccel NAME
  --disable-hwaccels       disable all hwaccels
  --disable-muxer=NAME     disable muxer NAME
  --enable-muxer=NAME      enable muxer NAME
  --disable-muxers         disable all muxers
  --disable-demuxer=NAME   disable demuxer NAME
  --enable-demuxer=NAME    enable demuxer NAME
  --disable-demuxers       disable all demuxers
  --enable-parser=NAME     enable parser NAME
  --disable-parser=NAME    disable parser NAME
  --disable-parsers        disable all parsers
  --enable-bsf=NAME        enable bitstream filter NAME
  --disable-bsf=NAME       disable bitstream filter NAME
  --disable-bsfs           disable all bitstream filters
  --enable-protocol=NAME   enable protocol NAME
  --disable-protocol=NAME  disable protocol NAME
  --disable-protocols      disable all protocols
  --enable-indev=NAME      enable input device NAME
  --disable-indev=NAME     disable input device NAME
  --disable-indevs         disable input devices
  --enable-outdev=NAME     enable output device NAME
  --disable-outdev=NAME    disable output device NAME
  --disable-outdevs        disable output devices
  --disable-devices        disable all devices
  --enable-filter=NAME     enable filter NAME
  --disable-filter=NAME    disable filter NAME
  --disable-filters        disable all filters

外部库:(通过./configure -h命令输出的External library support项查看)
--enable-libfdk-aac 链接libfdk-aac库,用于libfdk_aac编码器和解码器
(--enable-encoder=libfdk_aac和--enable-decoder=libfdk_aac)
--enable-openssl 链接openssl库,用于https功能;

工具链:(通过./configure -h命令输出的Toolchain options项查看)
--sysroot= "../MacOSX10.10.sdk"或"../android-ndk-r10e/platforms/android-19/arch-arm"
--extra-cflags "-I../tool/fdk-aac@2.0.2/include -I../tool/openssl@1.0.1u/include"
--extra-ldflags  "-L../tool/fdk-aac@2.0.2/lib -L../tool/openssl@1.0.1u/lib"
--extra-libs "-lfdk-aac -lssl -lcrypto"
------------------------------------------------------------------
​​​​​​​--enable-cross-compile
--arch "arm"、"aarch64"
​​​​​​​
--target-os "linux"、"android"
--cc
​​​​​​​--nm

工具链:$ANDROID_NDK_HOME/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
cc:  bin/arm-linux-androideabi-gcc
nm: arm-linux-androideabi-nm

windows 编译

windows

glext

Download GLEXT - Win32 OpenGL Extension API from SourceForge.net

Mali_OpenGL_ES_Emulator-v3.0.4-2-g8d905-Windows-64bit.zip

https://armkeil.blob.core.windows.net/developer/Files/downloads/open-gl-es-emulator/3.0.4/Mali_OpenGL_ES_Emulator-v3.0.4-2-g8d905-Windows-64bit.zip

nv-codec-headers-10.0.26.0.tar.gz

https://github.com/FFmpeg/nv-codec-headers/releases/tag/n10.0.26.0

AMF-1.4.16.tar.gz

https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/tag/1.4.16

VSNASM.zip (2017\Community\Common7\IDE\VC\VCTargets\BuildCustomizations)

Release 0.7 · ShiftMediaProject/VSNASM · GitHub

nasm.exe和ndisasm.exe (C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC)

https://www.nasm.us/pub/nasm/releasebuilds/2.14.02/win64/nasm-2.14.02-win64.zip

VSYASM.zip

https://github.com/ShiftMediaProject/VSYASM/releases/tag/0.6

创建编译根目录ffmpeg_compile,在此目录创建source目录,克隆ffmpeg,重置为指定分支,执行依赖脚本

@echo off
md ffmpeg_compile && cd ffmpeg_compile
md source         && cd source
git clone https://github.com/ShiftMediaProject/FFmpeg.git
git reset --hard 18e58146bb0ef4b2d421d8f6f681c0562b7b1c01
@echo off

set  runtime_dir=%cd%
set  script_dir=%~dp0
set  source_dir=%cd%\ffmpeg_local\source

if EXIST ffmpeg_local rd /s /q ffmpeg_local
md ffmpeg_local    && cd ffmpeg_local
md source          && cd %script_dir%

rem 遍历出隐藏 git文件夹
rem 创建出 git 去掉隐藏属性 
rem 复制到 git 增加隐藏属性
rem 还有隐藏属性
for /f "tokens=1,2 delims=." %%i in ('dir /AHD /B') do ( 
echo "------------------------------> %%i.%%j"
md %source_dir%\%%i
md %source_dir%\%%i\.git
attrib -h %%i.%%j
xcopy /e /q %%i.%%j %source_dir%\%%i\.git
attrib +h %source_dir%\%%i\.git
pushd %source_dir%\%%i
git checkout .
popd
attrib +h %%i.%%j)


pause


ILBC_STATIC_DEFINE

FRIBIDI_LIB_STATIC

android 编译

# -arch - arm/aarch64/i686/x86_64
# -cpu  - armv7-a/armv8-a/x86/x86_64

macos 

  build_android_r19c_macos.sh

#!/bin/bash

# NDK 路径
NDK_HOME=/Users/yuan/Project/android/ffmpeg/android-ndk-r19c
# 工具链和系统 - Android 5.0
TOOLCHAIN=$NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64
SYSROOT=$NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
API=21

# armv7-a
function build_arm
{
./configure \
--prefix=$(pwd)/../android_ffmpeg/armv7-a \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-small \
--enable-shared \
--disable-static \
--disable-doc \
--disable-programs \
--disable-symver \
--enable-debug \
--enable-asm \
--enable-jni \
--enable-neon \
--enable-mediacodec \
--enable-avfilter \
--disable-postproc \
--enable-cross-compile \
--target-os=android \
--arch=arm \
--cpu=armv7-a \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT \
--cc=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang \
--cxx=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++ \
--extra-cflags="-isysroot $NDK_HOME/sysroot -Os -fpic -mfloat-abi=softfp -mfpu=neon -marm -march=armv7-a" \
--extra-ldflags="-marm"
make clean
make j2
make install
}
# armv8-a
function build_aarch64
{
./configure \
--prefix=$(pwd)/../android_ffmpeg/armv8-a \
--enable-gpl \
--enable-nonfree \
--enable-version3 \
--enable-small \
--enable-shared \
--disable-static \
--disable-doc \
--disable-programs \
--disable-symver \
--enable-debug \
--enable-asm \
--enable-jni \
--enable-neon \
--enable-mediacodec \
--enable-avfilter \
--disable-postproc \
--enable-cross-compile \
--target-os=android \
--arch=aarch64 \
--cpu=armv8-a \
--cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
--sysroot=$SYSROOT \
--cc=$TOOLCHAIN/bin/aarch64-linux-android$API-clang \
--cxx=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ \
--extra-cflags="-isysroot $NDK_HOME/sysroot -Os -fpic -marm -march=armv8-a" \
--extra-ldflags="-marm"
make clean
make j2
make install
}

build_arm
build_aarch64

Linux

macos 编译

出现下面红色字体错误:

  1. nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
  2. ERROR: libfdk_aac not found
  3. C compiler test failed.

默认打开

通过配置关闭 --disable-x86asm,

或者加入yasm和nasm执行程序路径

export PATH=../../tool/yasm@1.2.0/bin:../../tool/nasm@2.15.05:$PATH

默认关闭 ,启用配置为 --enable-encoder=libfdk_aac

C compiler test failed.通常是路径问题

比如:(下面路径不存在都有可能出现这样的错误)

--extra-cflags=$EXTRA_CFLAGS

--extra-ldflags=$EXTRA_LDFLAGS

--sysroot="../../tool/MacOSX10.10.sdk"

参考

Mac OS 编译 Android 平台 FFmpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值