Android 上的 FFmpeg

2024-04-17

我已经在 Android 上编译了 FFmpeg (libffmpeg.so)。现在我必须构建一个像 RockPlayer 这样的应用程序,或者使用现有的 Android 多媒体框架来调用 FFmpeg。

  1. 您有在 Android / StageFright 上集成 FFmpeg 的步骤/程序/代码/示例吗?

  2. 您能指导我如何使用这个库进行多媒体播放吗?

  3. 我有一个要求,我已经有了音频和视频传输流,我需要将其提供给 FFmpeg 并对其进行解码/渲染。由于 IOMX API 是基于 OMX 的并且无法在此处插入 FFmpeg,因此如何在 Android 上执行此操作?

  4. 另外,我找不到有关需要用于播放的 FFmpeg API 的文档。


以下是我让 ffmpeg 在 Android 上运行所经历的步骤:

  1. 为 Android 构建 ffmpeg 静态库。这是通过构建 olvaffe 的 ffmpeg android 端口来实现的(libffmpeg http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android/commits/android) 使用Android 构建系统 http://source.android.com/porting/build_system.html。只需将源放在 /external 下,然后make离开。您还需要从 Android 构建中提取 bionic(libc) 和 zlib(libz),因为 ffmpeg 库依赖于它们。
  2. 使用 Android 创建包装 ffmpeg 功能的动态库NDK http://developer.android.com/sdk/ndk/index.html。有很多关于如何使用 NDK 的文档。基本上,您需要编写一些 C/C++ 代码,将您需要的功能从 ffmpeg 导出到 java 可以通过 JNI 进行交互的库中。 NDK 允许您轻松链接到在步骤 1 中生成的静态库,只需在 Android.mk 中添加与此类似的行:LOCAL_STATIC_LIBRARIES := libavcodec libavformat libavutil libc libz

  3. 使用 java 源中的 ffmpeg-wrapping 动态库。关于 JNI 的文档已经足够了,应该没问题。

关于使用ffmpeg进行播放,有很多例子(ffmpeg二进制文件本身就是一个很好的例子),here http://dranger.com/ffmpeg/tutorial01.html是一个基本教程。最好的文档可以在标题中找到。

祝你好运 :)

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

Android 上的 FFmpeg 的相关文章

随机推荐

  • 比较当前文件版本和上一个远程存储库

    如何区分我的工作文件版本与远程存储库中的某些先前版本 假设我今天拉取 对本地副本执行 6 8 次提交 然后想要查看我的最新工作版本 给定文件 与远程或任何其他版本上的最新版本之间的差异 要查看 最新工作版本 我将其作为您的工作副本 之间的差
  • 使用 sharekit 在 Facebook 上添加图像和描述

    我正在使用 sharekit 在 Facebook 上分享文本 我想在文本附近添加一张图片 如下图所示 知道如何做到这一点吗 还有其他合适的库 例如 sharekit 吗 谢谢 将 og image 元标记添加到 head html 块中
  • 如何获取使用 AngularDart 的路线?

    这是我的代码 import package angular angular dart class AppModule extends Module AppModule type AppController type LoginControl
  • Biopython无法直接访问异质残基

    我可以使用以下方法直接获取蛋白质 1n31 的残基 residue structure 0 A 100 然而 当我尝试访问异质残基时 例如 residue structure 0 A 2003 我收到错误消息 File
  • 顺序订阅可观察数组

    在这里 我用过forkJoin从 rxjs 并行订阅可观察数组 但我想一一订阅 最好的解决方案是什么 下面是我的代码 var observables Observable forkJoin observables subscribe gt
  • 从 Vaadin 8 Grid 获取列表

    Problem 我有一个 Vaadin 8 Grid 但我找不到提取其中项目的方法 描述 从网格开始 Grid
  • Clojure:避免埃拉托斯特尼筛中的堆栈溢出?

    这是我在 Clojure 中实现的埃拉托斯特尼筛法 基于 SICP 流课程 defn nats from n iterate inc n defn divide p q zero rem q p defn sieve stream lazy
  • 未找到 SDL2_image

    我正在尝试编译以下具有标题的代码 include
  • Vulkan:上传 3 通道图像到设备

    假设主机端有一个3通道图像 float或uint8 需要传输到设备图像 vkCmdCopyBufferToImage用于它 对于设备图像的格式 我看到两个选项 使用 R32G32B32A32 SFLOAT R8G8B8A8 SNORM 并将
  • 代数数据类型的特征

    我无法理解有关代数数据类型特征的规则 这是一个简化的示例 use std rc Rc use std cell RefCell trait Quack fn quack self struct Duck impl Quack for Duc
  • SQL Server 2014:相同虚拟机的不同性能(巨大的“执行次数”)

    I have 2 个相同的虚拟机 16 个 vCPU RAM 64GB 具有相同的数据库 相同的表和视图以及相同的行数 View1 有 470 万行 在 VM1 UAT 上SELECT TOP 1000 FROM View1不到 1 秒即可
  • 复选框验证码

    我正在开始我的第一次创业 我无法忍受在注册网站时尝试读取验证码 也不希望我的用户这样做 我寻找替代方案 然后我发现了复选框验证码 http uxmovement com forms captchas vs spambots why the
  • Apache Flink - 如何使用 AWS Kinesis 发送和使用 POJO

    我想使用 Flink 来使用来自 Kinesis 的 POJO 是否有关于如何正确发送和反序列化消息的标准 Thanks 我用以下方法解决了它 DataStream
  • 使用 print in 循环会减慢循环速度

    Using print in a loop slows down the loop Printing something I tried with Hello 100 times take 2 sec without it it takes
  • 如何使用两个条件查询 SQLite 数据库?

    我有一个关于员工的表 包含 3 列 如以下代码 db execSQL CREATE TABLE TABLE NAME ID INTEGER PRIMARY KEY AUTOINCREMENT DEPT TEXT NOT NULL NAME
  • git - 如何在存储库级别隐藏特定文件的更改[重复]

    这个问题在这里已经有答案了 我们在 git 中有一个文件never想要改变 该文件具有产品附带的默认值 但是 当我们在本地运行构建过程时 该文件会发生更改 因此 当人们忘记并提交该文件时 该文件自然会一直被签入 是的 我知道这很愚蠢 但很难
  • JSONArray[0] 不是 JSONObject 异常

    我正在尝试从以下 Json 字符串中提取每个 company id 的 id String test company id 4100 data drm user id 572901936637129135 direct status id
  • 惯用使用 std::auto_ptr 还是只使用shared_ptr?

    现在shared ptr是在 tr1 中 你认为使用应该会发生什么std auto ptr 它们都有不同的用例 但所有用例auto ptr可以用以下方法解决shared ptr 也 你会放弃吗auto ptr或者在您想明确表示在任何给定点只
  • MongoDB 和 Nest.js:为集合定义自定义名称

    我有一个这样的架构 Schema export class Pais extends Document Prop raw codigo type String index true unique true Prop descripcion
  • Android 上的 FFmpeg

    我已经在 Android 上编译了 FFmpeg libffmpeg so 现在我必须构建一个像 RockPlayer 这样的应用程序 或者使用现有的 Android 多媒体框架来调用 FFmpeg 您有在 Android StageFri