背景:
本文旨在Android端导入和调试ffmpeg使用,作为工具文档简化初次入门使用难度。
下载 FFmpeg源码:
git clone https://github.com/FFmpeg/FFmpeg.git
编译FFmpeg源码:
创建Android端编译脚本:
#!/bin/bash
API=21
NDK=/Users/admin/Downloads/android-ndk-r21e
PREBUILT=$NDK/toolchains/llvm/prebuilt/darwin-x86_64
PREFIX= /Users/admin/CoderApp/democode/FFmpeg/build/arm64-v8aCONFIGURE_FLAGS="
--disable-programs \
--disable-avdevice \
--disable-swresample \
--disable-swscale \
--disable-postproc \
--disable-avfilter \
--disable-network \
--disable-everything \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-decoder=hevc_mediacodec \
--enable-demuxer=h264 \
--enable-demuxer=mov \
--enable-protocol=file"./configure \
$CONFIGURE_FLAGS \
--target-os=android \
--arch=aarch64 \
--enable-cross-compile \
--cross-prefix=$PREBUILT/bin/aarch64-linux-android- \
--prefix=$PREFIX \
--cc=$PREBUILT/bin/aarch64-linux-android$API-clang \
--cxx=$PREBUILT/bin/aarch64-linux-android$API-clang++
编译产物运行:
make -j8 > export.txt
将其中的.o文件替换为.c添加到后续的CmakeList.txt的编译脚本中。
CC libavformat/avio.o
CC libavformat/allformats.o
CC libavformat/aviobuf.o
CC libavformat/dovi_isom.o
CC libavformat/demux.o
CC libavformat/dump.o
CC libavformat/file.o
CC libavformat/format.o
CC libavformat/h264dec.o
CC libavformat/id3v1.o
CC libavformat/id3v2.o
CC libavformat/isom.o
CC libavformat/isom_tags.o
CC libavformat/metadata.o
CC libavformat/mov.o
CC libavformat/mov_chan.o
CC libavformat/mov_esds.o
CC libavformat/mux.o
CC libavformat/options.o
CC libavformat/os_support.o
CC libavformat/qtpalette.o
CC libavformat/protocols.o
CC libavformat/rawdec.o
CC libavformat/replaygain.o
CC libavformat/riff.o
CC libavformat/riffdec.o
CC libavformat/sdp.o
CC libavformat/seek.o
CC libavformat/url.o
CC libavformat/utils.o
........
Android Studio导入FFmpeg源码:
创建Android demo过程,选择任意activity;
创建model,nativelib工程: