网站后台 设计,只做网站的,中原免费网站建设,wordpress添加电话代码下载代码
git clone gitgithub.com:FFmpeg/FFmpeg.git
git checkout n7.0建立build目录
mkdir build
cd build创建build.sh脚本
vim build.sh这段脚本的主要功能是配置和编译 FFmpeg#xff0c;使其能够在 Android 平台上运行#xff0c;通过设置不同的架构和 API 级别github.com:FFmpeg/FFmpeg.git
git checkout n7.0建立build目录
mkdir build
cd build创建build.sh脚本
vim build.sh这段脚本的主要功能是配置和编译 FFmpeg使其能够在 Android 平台上运行通过设置不同的架构和 API 级别可以生成适用于不同 Android 设备的 FFmpeg 库。
#!/bin/bash# 设置 NDK 路径需替换为实际路径NDK/home/hui/Android/Sdk/ndk/21.0.6113669/# 选择目标架构armv7a/arm64/x86/x86_64ARCHarm64
API21# 工具链路径
TOOLCHAIN$NDK/toolchains/llvm/prebuilt/linux-x86_64# 输出目录
PREFIX$(pwd)/android/$ARCH# 根据架构配置参数
case $ARCH inarmv7a)CPUarmv7-aTARGET_TRIPLEarmv7a-linux-androideabi;;arm64)CPUarmv8-aTARGET_TRIPLEaarch64-linux-android;;x86)CPUi686TARGET_TRIPLEi686-linux-android;;x86_64)CPUx86_64TARGET_TRIPLEx86_64-linux-android;;
esac# 编译器路径
CC$TOOLCHAIN/bin/$TARGET_TRIPLE$API-clang
CXX$TOOLCHAIN/bin/$TARGET_TRIPLE$API-clang
STRIP$TOOLCHAIN/bin/aarch64-linux-android-strip# FFmpeg 配置参数
../configure \--prefix$PREFIX \--disable-shared \--enable-static \--enable-gpl \--enable-cross-compile \--enable-jni \--enable-ffmpeg \--disable-doc \--target-osandroid \--arch$ARCH \--cpu$CPU \--cc$CC \--cxx$CXX \--strip$STRIP \--sysroot$TOOLCHAIN/sysroot \--extra-cflags-march$CPU -O3 -fPIC \--extra-ldflags-Wl,-rpath-link$TOOLCHAIN/sysroot/usr/libmake clean
make -j16
make install关键步骤说明
设置路径包括 NDK 路径、工具链路径和输出目录。
配置参数根据目标架构设置相应的编译参数。
调用 FFmpeg 配置脚本传递所有必要的参数以配置 FFmpeg 编译环境。
编译和安装清理之前的编译结果进行编译并安装生成的库文件。
FFmpeg 配置脚本
../configure \--prefix$PREFIX \--disable-shared \--enable-static \--enable-gpl \--enable-cross-compile \--enable-jni \--enable-ffmpeg \--disable-doc \--target-osandroid \--arch$ARCH \--cpu$CPU \--cc$CC \--cxx$CXX \--strip$STRIP \--sysroot$TOOLCHAIN/sysroot \--extra-cflags-march$CPU -O3 -fPIC \--extra-ldflags-Wl,-rpath-link$TOOLCHAIN/sysroot/usr/lib参数解释
--prefix$PREFIX指定安装目录。
--disable-shared禁用共享库生成。
--enable-static启用静态库生成。
--enable-gpl启用 GPL 许可证的功能。
--enable-cross-compile启用交叉编译。
--enable-jni启用 JNI 支持。
--enable-ffmpeg启用 FFmpeg 应用程序。
--disable-doc禁用文档生成。
--target-osandroid指定目标操作系统为 Android。--arch$ARCH指定目标架构。
--cpu$CPU指定目标 CPU 架构。
--cc$CC 和 --cxx$CXX指定 C 和 C 编译器路径。
--strip$STRIP指定用于剥离调试符号的工具路径。
--sysroot$TOOLCHAIN/sysroot指定系统根目录。
--extra-cflags-march$CPU -O3 -fPIC指定额外的编译标志。
--extra-ldflags-Wl,-rpath-link$TOOLCHAIN/sysroot/usr/lib指定额外的链接标志。
--disable-shared --enable-static好处是把ffmpeg编译成一个独立的可执行文件放到手机里面的时候只需要把ffmpeg程序push进去即可。
在手机上运行
adb push ffmpeg /data/localadb shell
$ chmod x /data/local/ffmpeg
$ /data/local/ffmpeg -i /sdcard/执行ffmpeg命令
phone:/sdcard $ /data/local/ffmpeg -i input.mp4 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from input.mp4:Metadata:major_brand : mp42minor_version : 0compatible_brands: isommp42creation_time : 2025-03-03T07:01:49.000000Zcom.android.version: 14Duration: 00:02:31.20, start: 0.000000, bitrate: 21470 kb/sStream #0:0[0x1](eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 2160x3840, 21371 kb/s, 60 fps, 60 tbr, 90k tbn (default)Metadata:creation_time : 2025-03-03T07:01:49.000000Zhandler_name : VideoHandlevendor_id : [0][0][0][0]Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)Metadata:creation_time : 2025-03-03T07:01:49.000000Zhandler_name : SoundHandlevendor_id : [0][0][0][0]