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