用于 android 的 ffmpeg(使用教程:“ffmpeg 和 Android.mk”)
Posted
技术标签:
【中文标题】用于 android 的 ffmpeg(使用教程:“ffmpeg 和 Android.mk”)【英文标题】:ffmpeg for a android (using tutorial: "ffmpeg and Android.mk") 【发布时间】:2011-02-08 08:35:17 【问题描述】:我正在尝试为 android 编译 ffmpeg。我发现了几个关于这个主题的帖子,但这些似乎都不起作用。如果尝试像在 [1] 上发布的那样构建 ffmpeg。有人使用这些教程成功编译了ffmpeg吗? 我不确定如何实现步骤 4 到 5。
第 4 步:配置 ...
步骤 5:cd 到您的 NDK 根目录,输入 make TARGET_ARCH=arm APP=ffmpeg-org
在我看来,构建一个像教程第 5 步中解释的应用程序需要一些前面的步骤。不幸的是,我的文件夹中没有要制作的应用程序。我正在使用当前的 android ndk 版本 3 并检查了 [3] 和 [4] 中的实际 ffmpeg 版本。我感谢每一个建议。
[1]http://slworkthings.wordpress.com/ [2]http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android [3]http://ffmpeg.org/download.html
【问题讨论】:
我已经浏览了这里和许多其他站点的所有回复,但似乎没有针对 Android 编译、构建和使用 ffmpeg(在 Windows 环境中)的权威指南。能够做到这一点将非常有用。 我找到了以下链接,该链接有效rowntreerob.wordpress.com/2012/06/17/… 【参考方案1】:环顾网络后。我找到的唯一可行的解决方案是由 Bambuser 提供的,它移植了 ffmpeg 以在他们的 android 应用程序中使用。
代码在这里:http://bambuser.com/opensource
基本上,您将 .so 文件以及您可能需要的任何 .h 文件复制到您的 jni/lib 目录,然后通过 javah 创建一个 JNI 包装器,然后它就可以工作了。
编辑:
由于这篇文章是为 Android 编写了一些打包的 ffmpeg 项目,因此最容易编译和使用的项目之一是:https://github.com/guardianproject/android-ffmpeg。
它采用静态编译二进制(不是库)的方法,在运行时通过 shell 命令运行。在 github 上搜索“android ffmpeg
”以获取 forks 和相关项目。
不过,没有找到基于 JNI 实现的良好封装方法。
【讨论】:
你不需要一个可以调用共享库的 C 或 C++ 文件,或者这些调用可以通过头文件进行吗? 你能详细说明一下吗(也在@John的问题上)?你搞定了吗? 嘿,@Guy,你认为你能详细说明你是如何做到这一点的吗?可能有一些代码示例和说明?【参考方案2】:我在这里找到了关于 android 上 ffmpeg 的指南: http://rxwen.blogspot.com/2010/05/use-ffmpeg-to-setup-streaming-server-on.html
他在另一篇文章中解释了他如何在 android 上进行本地编程以安装 ffmpeg。希望对您有所帮助。
【讨论】:
【参考方案3】:我将提供一个更更新的源列表,其中将解释如何构建,在某些情况下,甚至在 Android 上使用FFMPEG
。
这是我最喜欢的指南:http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/
如果您需要更多选择,可以看看这些,同样不错:
https://github.com/guardianproject/android-ffmpeg https://github.com/halfninja/android-ffmpeg-x264 https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk【讨论】:
github.com/appunite/AndroidFFmpeg 似乎也相当不错。但它是一个视频播放器,我需要一个转码器,所以你到 android-ffmpeg-x264 的第二个链接看起来很合适,谢谢【参考方案4】:在 NDK r3 中,当您使用 make
命令时,NDK 将简单地使用“apps”文件夹中的文件夹名称作为项目名称。这假设您有 FFmpeg 源文件和 android.mk
在 NDK/apps/ffmpeg-org/jni/
中的某个位置
换句话说,请确保您的文件夹名称设置为ffmpeg-org
。
编辑:您可能会发现使用将make
更改为ndk-build
的NDK r4 是值得的。在这个新的 NDK 中,您不需要以任何特定方式设置项目,因为 ndk-build
只需在您的项目中搜索 Android.mk
文件即可告诉它要编译什么。
【讨论】:
以上是关于用于 android 的 ffmpeg(使用教程:“ffmpeg 和 Android.mk”)的主要内容,如果未能解决你的问题,请参考以下文章
bindProcessToNetwork 不适用于 android 中的 ffmpeg