Android:如何在 android studio 中配置 FFMPEG 最新版本?

Posted

技术标签:

【中文标题】Android:如何在 android studio 中配置 FFMPEG 最新版本?【英文标题】:Android: How to configure FFMPEG latest version in android studio? 【发布时间】:2016-07-16 14:45:11 【问题描述】:

我想在 android studio 中配置 FFMPEG,但我无法获得任何文档或链接。 Github 上有许多可用于 android 的 FFMPEG lib,但都是旧版本。以及如何在android中运行命令?我想知道在配置FFMPEG 之后我们如何运行FFMPEG 命令。为此帮助我。提前谢谢。

我使用了以下链接,但在最新版本中没有成功。

http://writingminds.github.io/ffmpeg-android-java

https://github.com/WritingMinds/ffmpeg-android-java

https://github.com/havlenapetr/FFMpeg

https://github.com/appunite/AndroidFFmpeg

https://github.com/WritingMinds/ffmpeg-android

【问题讨论】:

最新版的FFMPEG是什么意思??我的意思是最新版本和你上面提供的链接有什么区别。我曾与FFMPEG android 合作并成功创建了许多视频..!! @jankigadhiya 我想在 FFMPEG 中使用反向命令,但不能在上面提供的链接的所有库中使用 @jankigadhiya 我需要使用反向命令或易于反转视频? 但可用反向命令的最新版本 我已经为 NDK r12b 执行了它,看看我的答案更新它是 android studio 的完整设置..!! 【参考方案1】:

FFMPEG的最新版本是3.1.1,12天前刚刚发布。所以我认为没有readily available demo like this old 一个。

我们需要自己构建FFMPEG 库。我发现只是粘贴在这里的一些问题可能会对您有所帮助。 (未测试)

如何为 Android 构建 FFmpeg

    Compiling FFmpeg 2.3 with Android NDK r10 How to compile ffmpeg-2.5.3 on windows with android-ndk-r10d How to compile ffmpeg-2.2.2 on windows with cygwin and android ndk r9c How to buid ffmpeg with android-ndk-r10d in windows

你需要自己编译通过下载Android NDK & Latest Version of FFMPEG

还有一个教程:How to Build FFmpeg for Android。这已经很老了,所以你只需要更改这里提到的版本。对于FFMPEG,它将是3.1.1 和NDK,它将是r12b


使用 NDK r12b 构建 FFMPEG

    下载Android NDK:可以在Android NDK website下载最新版本的Android NDK。在撰写此答案时,最新版本是 NDK r12。只需解压缩存档

    下载ffmpeg源代码:FFMPEG源代码可以从ffmpeg website下载。最新的稳定版本是 3.1.1(在撰写本文时)。下载源代码并解压到$NDK/sources文件夹。

    更新配置文件:使用文本编辑器打开 ffmpeg-3.1.1/configure 文件,找到以下行。

    SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
    SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
    

    这会导致 ffmpeg 共享库被编译为 libavcodec.so. (例如 libavcodec.so.55),这不是 兼容Android构建系统。因此我们需要更换 上面的行与下面的行。

    SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
    LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
    SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
    SLIB_INSTALL_LINKS='$(SLIBNAME)
    

    构建 ffmpeg: 将以下文本复制到文本编辑器中,并在 ffmpeg_3.1.1 文件夹中将其保存为 build_android.sh。

        #!/bin/bash
        NDK=$HOME/Desktop/adt/android-ndk-r9
        SYSROOT=$NDK/platforms/android-9/arch-arm/
        TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
        function build_one
        
            ./configure
                --prefix=$PREFIX
                --enable-shared
                --disable-static
            --disable-doc
                    --disable-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
        
        CPU=arm
        PREFIX=$(pwd)/android/$CPU
        ADDI_CFLAGS="-marm"
        build_one
    

    文件保存后,转到该文件所在的目录并执行以下命令,

    sudo chmod +x build_android.sh
    

    然后通过命令执行脚本,

    ./build_android.sh
    

    构建输出:构建可能需要一段时间才能完成,具体取决于您的计算机速度。完成后,您应该能够找到一个文件夹 $NDK/sources/ffmpeg-3.1.1/android,其中包含 arm/lib 和 arm/include 文件夹。

    为您的项目提供 ffmpeg 库

上面的步骤已经过全面测试,我在我的机器上执行了这些步骤 构建成功。为了写这个答案,我采取了 本文参考How to Build ffmpeg with NDK r9 但就像旧版本一样,我对我的 拥有。

欢迎提出任何疑问。

【讨论】:

@JaydeepPatel 看到这个:superuser.com/questions/163049/… 让我们continue this discussion in chat。 您好,我正在使用 ubundu,在执行此行 ./build_android.sh 后,它显示 /configure: 3244: ./configure: Syntax error: redirection unexpected ./build_android.sh: line 8: -- prefix=/home/techniche/Android/ndk/android-ndk-r12b/sources/ffmpeg-3.1.3/android/arm:没有这样的文件或目录 我能够成功地为 ffmpeg 3.1.4 使用你的脚本,但是完成后没有 android 文件夹(步骤 5)输出,而是有.o.d、make 文件等文件夹。如何获取.so 嗨 @jankigadhiya .. 我在执行 build_android.sh 时发现问题错误:./build_android.sh:第 8 行:--prefix=/home/controller/Android/Sdk/ndk-bundle/ffmpeg -3.2.2/android/arm: 没有那个文件或目录【参考方案2】:

我已经使用 ffmpeg for android 体验了几周。

名为 FFmpeg4Android 的库可以在 here at WarZone 找到。

我知道标题是从 2011 年 12 月 6 日开始的,但我已经对其进行了测试和使用,并且一切运行顺利。您还没有提到您对这个库的确切需求,但您可以在official site 阅读有关 ffmpeg 功能的信息。

FFmpeg4Android 有一个示例项目,可以作为很好的参考,而且他们的支持是直接和明确的。

命令根据您输入的字符串运行,例如:

ffmpeg -y -i /sdcard/videokit/in.mp4 -strict experimental -s 160x120 -r 25 -vcodec mpeg4 -b 150k -ab 48000 -ac 2 -ar 22050 /sdcard/videokit/out。 mp4

如果您需要进一步的帮助,请告诉我,我很乐意提供帮助。

【讨论】:

【参考方案3】:

你看过这个链接 Writingminds 的 FFmpeg 库在this link 中提供了关于它的所有解释

该库写作的最新版本在这里https://github.com/WritingMinds/ffmpeg-android-java/releases

如果您想使用任何库的最新版本,您可以直接在 build.gradle 中进行操作,因为如果任何库未更新,则可以看到并且可以从 build.gradle 进行更新,我总是为许多库执行此操作获取最新的可用版本。

对于 FFMpeg 中的 gradle 使用这个

compile 'com.writingminds:FFmpegAndroid:0.3.2'

更多类似的库在这个链接上给出 https://android-arsenal.com/details/1/925

另外我建议你阅读this que和this que

如果你想使用最新版本的原始库去这里:FFmpeg [最新版本将是here]

要添加原生代码,那么这些博客可能会对您有所帮助

http://ffmpeg-android.blogspot.in/ 和

http://www.roman10.net/2011/07/17/how-to-build-android-applications-based-on-ffmpeg-by-an-example/

【讨论】:

我想使用最新版本的FFMPEG 我已经在我对最新版本@RaviVGHL 的回答中提到了这个我在回答中给你的链接是给它writingminds.github.io/ffmpeg-android-java,你可以直接从 build.gradle 更新最新的库版本跨度> 但是这里没有使用这个库构建的任何最新版本 我已经在官方网站的回答中提供了,您始终可以获取最新版本。 ffmpeg.org/download.html 这是过时的依赖。请更新您的答案【参考方案4】:

我建议您使用以下对我有帮助的网址:

http://androidwarzone.blogspot.in/2011/12/ffmpeg4android.html

http://writingminds.github.io/ffmpeg-android-java/

https://androiddeveloperhelp.wordpress.com/2015/12/19/video-editing-android-example/

知识:

http://www.lai18.com/content/5175900.html

Android Studio 源码:

https://drive.google.com/file/d/0B9qAjo6wKhk9MEpNNjMxaG5oWXM/view?usp=sharing

也许对你有帮助。

【讨论】:

我想使用最新版本的FFMPEG 谢谢。你节省了我 2 到 3 天的时间。 @RaviVaghela : 你找到最新版本的解决方案了吗?

以上是关于Android:如何在 android studio 中配置 FFMPEG 最新版本?的主要内容,如果未能解决你的问题,请参考以下文章

Android Study Jam 倒计时:最后一周 提交小测赢好礼

Android Study Jam 倒计时:最后一周 提交小测赢好礼

Android Study 玩转百度ocr身份证识别不是梦~

android study day2

Google Study Jams:带你入门 Android 开发

报名 Android Study Jam,一键 get Jetpack Compose 新手指南!