Android 上使用命令运行 有直接导入 ffmpeg.c 源码 和 直接编译 ffmpeg 二进制执行文件,两种方式。
这篇介绍 直接编译 ffmpeg 二进制执行文件
编译脚本
其实很简单,回到 第一篇,只需要修改一句话就可以了。
--disable-ffmpeg \
改成 --enable-ffmpeg \
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| #!/bin/bash NDK=/Users/gavin/Develop/android-sdk/ndk-bundle SYSROOT=$NDK/platforms/android-15/arch-arm/ TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --enable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install }
build_one
|
执行编译
最终会生成一个 ffmpeg 文件
测试
找一个 root 后的手机,将 ffmpeg 拷贝到 手机 系统分区,adb shell 进入命令行模式,执行一下 ffmpeg -version 之类的,如果成功执行则即可进行集成。
这一步只是测试 ffmpeg 是否可用,最终完成的 apk 是不需要 root 权限的。
Apk 集成
拷贝 ffmpeg
把 ffmpeg 文件放在 assets 目录下,程序运行后,拷贝到软件 data 目录下。
赋予执行权限
通过 file.setExecutable(true)
赋予执行权限
Java 执行命令
1
| Runtime.getRuntime().exec(commandString);
|
参考项目
ffmpeg-android-java