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

2024-01-03

我要配置FFMPEG在 android studio 中,但我无法获得任何文档或链接。 Github上有很多FFMPEGlib 可用于 android,但都是旧版本。以及如何在android中运行命令?我想知道配置后FFMPEG那我们怎么跑FFMPEG命令。帮我解决这个问题。提前致谢。

我已使用以下链接,但最新版本未成功。

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

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

https://github.com/havlenapetr/FFMpeg https://github.com/havlenapetr/FFMpeg

https://github.com/appunite/AndroidFFmpeg https://github.com/appunite/AndroidFFmpeg

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


最新版本FFMPEG是3.1.1,12天前刚刚发布。所以我认为没有像这样旧的现成演示 https://github.com/WritingMinds/ffmpeg-android-java one.

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

如何为 Android 构建 FFmpeg

  1. 使用 Android NDK r10 编译 FFmpeg 2.3 https://stackoverflow.com/questions/24853599/compiling-ffmpeg-2-3-with-android-ndk-r10
  2. 如何使用 android-ndk-r10d 在 Windows 上编译 ffmpeg-2.5.3 https://stackoverflow.com/questions/27901708/how-to-compile-ffmpeg-2-5-3-on-windows-with-android-ndk-r10d
  3. 如何使用 cygwin 和 android ndk r9c 在 Windows 上编译 ffmpeg-2.2.2 https://stackoverflow.com/questions/23683518/how-to-compile-ffmpeg-2-2-2-on-windows-with-cygwin-and-android-ndk-r9c
  4. 如何在 Windows 中使用 android-ndk-r10d 构建 ffmpeg https://stackoverflow.com/questions/29874153/how-to-buid-ffmpeg-with-android-ndk-r10d-in-windows

您需要通过下载自行编译安卓NDK https://developer.android.com/ndk/downloads/index.html & 最新版本FFMPEG https://ffmpeg.org/.

还有一个教程:如何为 Android 构建 FFmpeg http://www.roman10.net/2011/07/17/how-to-build-ffmpeg-for-android/。这是相当旧的,所以你只需要更改这里提到的版本。为了FFMPEG这将是3.1.1&NDK 将会是r12b.


建筑FFMPEG使用 NDK r12b:

  1. 下载安卓NDK:最新版本的Android NDK可以在以下位置下载:Android NDK 网站 https://developer.android.com/ndk/downloads/index.html。在撰写此答案时,最新版本是 NDK r12。只需解压存档即可

  2. 下载ffmpeg源代码:FFMPEG源代码可以从以下网站下载ffmpeg 网站 http://www.ffmpeg.org/download.html。最新的稳定版本是 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 库可用于您的项目

上述步骤经过充分测试,我在我的机器上执行了它们并且 构建成功。为了写这个答案,我采取了 参考这篇文章如何使用 NDK 构建 ffmpeg r9 http://www.roman10.net/2013/08/18/how-to-build-ffmpeg-with-ndk-r9/但由于是旧版本,我对我的内容做了一些更正 自己的。

欢迎提出任何疑问。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:如何在android studio中配置FFMPEG最新版本? 的相关文章

  • 如何使用正则表达式验证 1-99 范围?

    我需要验证一些用户输入 以确保输入的数字在 1 99 范围内 含 这些必须是整数 Integer 值 允许前面加 0 但可选 有效值 1 01 10 99 09 无效值 0 007 100 10 5 010 到目前为止 我已经制定了以下正则
  • 当 minifyEnabled 为 true 时 Android 应用程序崩溃

    我正在使用多模块应用程序 并且该应用程序崩溃时minifyEnabled true in the installed模块的build gradle 以下是从游戏控制台检索到的反混淆堆栈跟踪 FATAL EXCEPTION Controlle
  • 用于缓存的 Servlet 过滤器

    我正在创建一个用于缓存的 servlet 过滤器 这个想法是将响应主体缓存到memcached 响应正文由以下方式生成 结果是一个字符串 response getWriter print result 我的问题是 由于响应正文将不加修改地放
  • Java:如何确定文件所在的驱动器类型?

    Java 是否有一种独立于平台的方法来检测文件所在的驱动器类型 基本上我有兴趣区分 硬盘 可移动驱动器 如 USB 记忆棒 和网络共享 JNI JNA 解决方案不会有帮助 可以假设 Java 7 您可以使用 Java 执行 cmd fsut
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • 无法在 Java/Apache HttpClient 中处理带有垂直/管道栏的 url

    例如 如果我想处理这个网址 post new HttpPost http testurl com lists lprocess action LoadList 401814 1 Java Apache 不允许我这么做 因为它说竖线 是非法的
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • Java - 从 XML 文件读取注释

    我必须从 XML 文件中提取注释 我找不到使用 JDOM 或其他东西来让它们使用的方法 目前我使用 Regex 和 FileReader 但我不认为这是正确的方法 您可以使用 JDOM 之类的东西从 XML 文件中获取注释吗 或者它仅限于元
  • Karaf / Maven - 无法解决:缺少需求 osgi.wiring.package

    我无法在 Karaf 版本 3 0 1 中启动捆绑包 该包是使用 Maven 构建的并导入gson http mvnrepository com artifact com google code gson gson 2 3 1 我按照要求将
  • 哪个视图最亮?

    在Android中 哪个是轻量级视图 例如 View Textview Edittext 等 在某些情况下 我们需要使用视图来填充区域而不向用户显示视图 同时屏幕加载速度应该很快 您可以使用空间 android widget Space S
  • 避免 Java 中的重复导入:继承导入?

    有没有办法 继承 导入 Example 常见枚举 public enum Constant ONE TWO THREE 使用此枚举的基类 public class Base protected void register Constant
  • 我可以限制分布式应用程序发出的请求吗?

    我的应用程序发出 Web 服务请求 提供商处理的请求有最大速率 因此我需要限制它们 当应用程序在单个服务器上运行时 我曾经在应用程序级别执行此操作 一个对象跟踪到目前为止已发出的请求数量 并在当前请求超出允许的最大负载时等待 现在 我们正在
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • 源值 1.5 的错误已过时,将在未来版本中删除

    我使用 scala maven plugin 来编译包含 scala 和 java 代码的项目 我已经将源和目标设置为1 7 但不知道为什么maven仍然使用1 5 这是我在 pom xml 中的插件
  • ArrayList.clear() 和 ArrayList.removeAll() 有什么区别?

    假如说arraylist定义为ArrayList
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • try-with-resources 中出现死代码警告,但翻译后的 try-catch-finally 中没有出现死代码警告

    以下代码使用try 有资源 https docs oracle com javase specs jls se7 html jls 14 html jls 14 20 3Java 8 中引入的构造 偶尔抛出 方法被声明为抛出一个偶尔的异常
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐