媒体

Android 包含 Stagefright。Stagefright 是位于 Native 层的媒体播放引擎,内置了基于软件的编解码器,且适用于热门媒体格式。

Stagefright 音频和视频播放功能包括集成 OpenMAX 编解码器、会话管理、基于时间的同步渲染、传输控制和 DRM。

Stagefright 还支持集成您提供的自定义硬件编解码器。要设置编码和解码媒体的硬件路径,您必须将基于硬件的编解码器作为 OpenMax IL(集成层)组件进行实现。

注意:Stagefright 更新可通过 Android 每月安全更新流程,作为 Android 操作系统版本的一部分进行更新。

架构

媒体应用根据以下架构与 Android Native 多媒体框架进行交互。

图 1. 媒体架构

应用框架

应用代码位于应用框架层,可利用 android.media API 与多媒体硬件进行交互。

Binder IPC

Binder IPC 代理用于促进跨越进程边界的通信。它们位于 frameworks/av/media/libmedia 目录中,并以字母“I”开头。

Native 多媒体框架

在 Native 层,Android 提供了一个利用 Stagefright 引擎进行音频和视频录制及播放的多媒体框架。Stagefright 随附支持的软件编解码器的默认列表,并且您可以使用 OpenMax 集成层标准实现自己的硬件编解码器。有关实现的更多详细信息,请参阅位于 frameworks/av/media 中的 MediaPlayer 和 Stagefright 组件。

OpenMAX 集成层 (IL)

OpenMAX IL 为 Stagefright 提供了一种标准化的方式来识别和使用基于硬件的自定义多媒体编解码器(称为组件)。您必须以名为 libstagefrighthw.so 的共享库的形式提供 OpenMAX 插件。此插件将 Stagefright 与您的自定义编解码器组件相连接,并且该组件必须根据 OpenMAX IL 组件标准来实现。

实现自定义编解码器

Stagefright 随附适用于通用媒体格式的内置软件编解码器,但您也可以添加自己的自定义硬件编解码器作为 OpenMAX 组件。为此,您必须创建 OMX 组件和一个 OMX 插件,将您的自定义编解码器与 Stagefright 框架相结合。关于组件,请参阅 hardware/ti/omap4xxx/domx/;关于 Galaxy Nexus 的示例插件,请参阅 hardware/ti/omap4xx/libstagefrighthw

添加您自己的编解码器:

  1. 根据 OpenMAX IL 组件标准创建您的组件。组件接口位于 frameworks/native/include/media/OpenMAX/OMX_Component.h 文件中。要详细了解 OpenMAX IL 规范,请访问 OpenMAX 网站。
  2. 创建一个将您的组件与 Stagefright 服务相连接的 OpenMAX 插件。关于创建插件的接口,请参阅 frameworks/native/include/media/hardware/OMXPluginBase.h 和 HardwareAPI.h 标头文件。
  3. 将您的插件构建为产品 Makefile 中名为 libstagefrighthw.so 的共享库。例如:  LOCAL_MODULE := libstagefrighthw

    在设备的 Makefile 中,确保将模块声明为产品包:

    PRODUCT_PACKAGES += \ libstagefrighthw \ ...

将编解码器暴露给框架

Stagefright 服务会解析 system/etc/media_codecs.xml 和 system/etc/media_profiles.xml,从而向应用开发者显示设备支持的编解码器和配置文件(通过 android.media. MediaCodecList 和 android.media.CamcorderProfile类)。您必须在 device/<company>/<device>/ 目录中创建两个文件,并将其复制到设备 Makefile 中系统映像的 system/etc 目录中。例如:

PRODUCT_COPY_FILES += \ device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \ device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \

有关完整的示例,请参阅 device/samsung/tuna/media_codecs.xml 和 device/samsung/tuna/media_profiles.xml

注意:从 Android 4.1 开始,不再支持媒体编解码器的 <Quirk> 元素。

android多媒体自定义编解码器相关推荐

  1. 《android多媒体api》之MediaPlayer自定义视频播放器

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

  2. Android多媒体开发

    Android多媒体开发系列文章 Android多媒体开发:录音机 Android多媒体开发:照相机 TextureView+MediaPlayer实现在线短视频播放 Android多媒体开发:第三方 ...

  3. Android 多媒体视频播放一( 多媒体理解与经验分享)

    前言 说到android的多媒体,一把辛酸一把泪,当初听说会多媒体的比较牛掰,公司也有需求,于是乎我也积极的加入研究android多媒体的行列,记得以前刚接触的时候,最开始还是比较头大的,主要是但是很 ...

  4. android开发高级开发,Android多媒体开发高级编程 (Shawn Van Every) pdf扫描版

    <android多媒体开发高级编程--为智能手机和平板电脑开发图形.音乐.视频和富媒体应用>使用清晰.直观的示例介绍了android sdk中丰富的多媒体功能,有助于您开发能够创建.播放和 ...

  5. android编程高级教程 pdf,Android多媒体开发高级编程

    在多媒体功能方面,今天的手机同时是照相机.相册.摄像机.电影播放器.音乐播放器.听写机,且可能具备更多功能. 特别是,Android在SDK中具有非常丰富的功能,本书将试图通过讨论和实例对该SDK进行 ...

  6. Android 多媒体之音频----(日积月累)

    在开发上,习惯的将音频.视频功能的使用称之为多媒体,实际上如果讲的宽泛一些的话,相机的使用,比如拍照,录制视频等,也可以划分到多媒体的范畴里面. 从本节课开始,我们就来看看Android中多媒体的AP ...

  7. 《Android多媒体应用开发实战详解:图像、音频、视频、2D和3D》——1.3节搭建Android应用开发环境...

    本节书摘来自异步社区<Android多媒体应用开发实战详解:图像.音频.视频.2D和3D>一书中的第1章,第1.3节搭建Android应用开发环境,作者 王石磊 , 吴峥,更多章节内容可以 ...

  8. Android多媒体开发介绍

    Android多媒体开发介绍 一.       多媒体架构 基于第三方PacketVideo公司的OpenCORE来实现,支持所有通用的音频/视频/静态图像格式,包括:MPEG4.H.264.MP3. ...

  9. 《android多媒体api》之MediaRecorder音视频录制api

    <android多媒体api>系列是整合梳理android开发中经常用到的媒体相关api:多媒体开发主要内容有音频.视频录制播放.摄像头操作.录制操作.流媒体.直播.推流.拉流等方面:最近 ...

最新文章

  1. 二、数据库的基本操作
  2. css 浮动问题 display显示 和 光标设置cursor
  3. 789. 逃脱阻碍者
  4. jQuery表格排序(tablesorter)
  5. 有限差分法与有限单元法的区别
  6. 动态规划(DP算法)详解
  7. 三菱plc控制步进电机实例_电工进阶PLC工程师!必学步进电机的编程控制指令,你掌握了吗...
  8. fuchsia代码管理
  9. 鲁大师升级“Pro”,2B领域谋篇布局
  10. iPhone X 适配(全)
  11. Babel 学习日记(0)
  12. 关于偶的专业-信息工程
  13. SQL 中的注释语句
  14. [Redis] Resid的删除策略
  15. Oracle之删除数据之后如何恢复的方法总结
  16. AIX 学习笔记之 存储管理 LV PV VG PP
  17. 暨大 c语言复试 2015,暨南大学历年复试真题合集.pdf
  18. 2019全球人工智能产品应用博览会将于今年5月在苏州举办!
  19. 国内首个零信任产业标准工作组成立,腾讯iOA重磅升级
  20. 思考:你的工作是否有反脆弱性?

热门文章

  1. 夜校计算机考证培训班
  2. 华为MA5626配置为普通交换机的方法
  3. 从零开始搭建创业公司后台技术栈
  4. _pickle.UnpicklingError: pickle data was truncated
  5. 十八.用户注册 ---- 用户名/用户密码/手机号验证 2021-04-07
  6. 盛大陈天桥:最好的商业模式要深谙“人性”
  7. 学生台灯用led灯好还是荧光灯好?推荐几款高品质的LED灯
  8. Qt问题:QDilog按下回车键竟然关闭了,想屏蔽Return键结果和Enter键弄反了,最后还接收不到Return的键盘事件了,气人不
  9. 『津津乐道播客』世界艾滋病日话题征集
  10. ajax传智播客百度云,传智播客AJAX视频资料分享