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

标签 java android android-studio video ffmpeg

我想在 android studio 中配置 FFMPEG 但我无法获得任何文档或链接。 Github 上有许多可用于 android 的 FFMPEG 库,但都是旧版本。以及如何在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的最新版本是3.1.1,12天前刚刚发布。所以我认为没有readily available demo like this old一个。

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

如何为 Android 构建 FFmpeg

  1. Compiling FFmpeg 2.3 with Android NDK r10
  2. How to compile ffmpeg-2.5.3 on windows with android-ndk-r10d
  3. How to compile ffmpeg-2.2.2 on windows with cygwin and android ndk r9c
  4. 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:

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

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

  3. 更新配置文件:使用文本编辑器打开 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)
    
  4. 构建 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
    
  5. 构建输出:构建可能需要一段时间才能完成,具体取决于您的计算机速度。完成后,您应该能够找到一个文件夹 $NDK/sources/ffmpeg-3.1.1/android,其中包含 arm/lib 和 arm/include 文件夹。

  6. 使 ffmpeg 库可用于您的项目

Steps above are fully tested and i performed them on my machine and the build was successful. For writing this answer i have took the reference from this article How to Build ffmpeg with NDK r9 but as it was for older version i have made some corrections on my own.

欢迎提出任何疑问。

关于java - Android:如何在 android studio 中配置 FFMPEG 最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36277628/

相关文章:

java - 使用 XML for Fragments 有什么意义?

java - Vaadin - 动态布局背景

android - Jenkins 构建失败,Gradle 构建守护进程意外消失

java - 从我的 Android 应用程序打开特定的 Whatsapp 联系人

android - map 版本 V1 在 Android 10 中崩溃

java - 发现批量更新失败的记录

Java - 最有效的快速检索结构

Android工作室布局xml不更新

java - 无法解析符号 'tag'

android - 程序类型已经存在 : android. support.constraint.BuildConfig