Android Studio中的ffmpeg用法

时间:2017-09-06 09:02:05

标签: ffmpeg

我尝试在Windows10下的Android Studio中使用ffmpeg源。 我通过followinf脚本在Virtual Box上的ubuntu下构建了ffmpeg.3.3.3,并将源集成到Android Studio项目中:

#!/bin/bash
NDK=/etc/FFmpegOnAndroid/android-ndk-r14b
SYSROOT=$NDK/platforms/android-21/arch-x86_64
TOOLCHAIN=/etc/FFmpegOnAndroid/android-ndk-r14b/toolchains/x86_64-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=/etc/FFmpegOnAndroid/ffmpeg-3.3.3/output
ADDI_CFLAGS="-fomit-frame-pointer"
function build_one
{
    ./configure \
        --prefix=$PREFIX \
        --enable-shared \
        --disable-static \
        --disable-doc \
        --disable-doc \
        --disable-symver \
        --enable-small \
        --cross-prefix=$TOOLCHAIN/bin/x86_64-linux-android- \
        --target-os=linux \
        --arch=x86_64 \
        --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

当我在ubuntu下执行以下命令时,创建的输出文件不会失去质量:

ffmpeg -i sample_2.mp4 -i ic_launcher.jpg -filter_complex [1:v]scale=70:-1[wm];[0:v][wm]overlay=W-w-10:H-h-10[out] -map 0:a? -map [out] output.mp4

但是当我在Android studio中使用相同的参数调用ffmpeg.c的main()函数时,输出文件的质量会丢失。

以下是创建的输出文件的信息差异:

Android Studio:

Stream #0:1(und): Video: mpeg4 (Simple Profile) (mp4v / 0x7634706D), yuv420p, 1200x720 [SAR 1:1 DAR 5:3], 585 kb/s, 25 fps, 25 tbr, 12800 tbn, 25 tbc (default)

ubuntu的:

Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1200x720 [SAR 1:1 DAR 5:3], 423 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc (default)

请你帮我解决这个问题。

提前致谢,

Sargis Boyajyan

1 个答案:

答案 0 :(得分:0)

要启用h264编码器,您应该使用x86(这不是默认配置)构建ffmpeg。另一方面,h264解码器是ffmpeg的有机组成部分,默认包含在内。请注意,x86库具有与大多数ffmpeg不同的许可。