【发布时间】:2014-11-13 06:04:17
【问题描述】:
我终于设法构建了 ffmpeg,详见此处:https://enoent.fr/blog/2014/06/20/compile-ffmpeg-for-android/,最后,我有了一个接受命令参数的 ffmpeg 库。
我只是在视频上应用水印图像,所以我使用这个 ffmpeg 命令:
ffmpeg -i input.avi -i logo.png -filter_complex 'overlay=10:main_h-overlay_h-10' output.avi
基本配置:
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-protocol=concat \
--enable-protocol=file \
--enable-muxer=mp4 \
--enable-demuxer=mpegts \
--enable-memalign-hack \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic -marm $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS"
ffmpeg 不需要其他命令。
编译 ffmpeg 时,我得到这些文件:
我想将库的大小尽可能减小,所以根据上述命令,我可以从最终构建中删除任何文件吗?
目前设备中最常见的 CPU 是哪一个? arm v7vfpv3、arm v7vfp、arm v7n?我想覆盖尽可能多的设备。
#arm v6
#CPU=armv6
#OPTIMIZE_CFLAGS="-marm -march=$CPU"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
#arm v7vfpv3
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=$CPU "
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=
build_one
#arm v7vfp
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
#PREFIX=./android/$CPU-vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
#arm v7n
#CPU=armv7-a
#OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -marm -march=$CPU -mtune=cortex-a8"
#PREFIX=./android/$CPU
#ADDITIONAL_CONFIGURE_FLAG=--enable-neon
#build_one
#arm v6+vfp
#CPU=armv6
#OPTIMIZE_CFLAGS="-DCMP_HAVE_VFP -mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU"
#PREFIX=./android/${CPU}_vfp
#ADDITIONAL_CONFIGURE_FLAG=
#build_one
【问题讨论】:
-
这些可能是调试版本。确保使用条带编译并优化参数。
-
您可以从
--disable-everything开始,然后从那里开始构建。不过这可能很棘手。不要忘记用于 MP3 编码的 libmp3lame,因为您正在输出 AVI(为什么是 AVI 而不是 MP4?)。您还需要 zlib 进行 PNG 解码,并且不要忘记为覆盖使用启用过滤。
标签: android ffmpeg java-native-interface