Android Multimedia Framework
文章平均质量分 83
tjy1985
北漂青年
展开
-
OMXCodec与OMX事件处理流程
学习了解Mutilmedia Framework有一段时间了,今天闲下来稍微整理整理。OMXCodec.cpp类属于libstagefright,在整个MM PF 相当OMX的适配层,供awesomeplayer调用,而OMX.cpp,OMXNoteInstance.cpp等相当于OpenMax中的OpenMax IL,首先讲下OMXCodec与OMX callback事件的处理流程。先看整个流程原创 2012-03-27 11:12:13 · 34303 阅读 · 7 评论 -
Android Audio Overview
Android Audio Overview音乐播放器是手机中重要的娱乐应用,我们在开发播放器有可能用到mediaplayer,或者AudioTrack来播放音频文件,对应应用开发者来说,我们只要了解了暴露出来的API就可以了,但是光了解API还是不能全面的理解设计者的理念和思路,无法清楚音频如何选择什么的设备进行输出。下面我们本着探讨的目的来了解下audio的架构,完善我们对audio的了解原创 2013-08-13 09:22:30 · 7779 阅读 · 1 评论 -
android多媒体框架之流媒体具体流程篇3----base on jellybean(十三)
距离上一篇文章好久了,一直没更新上,在此深表歉意。上一篇我们讲到了从web server 中获取了sessiondescription,并解析出了media server的路径和一些基本的媒体信息。下面我们开始讲述如何跟mediaserver建立连接并控制服务器端和客户端以达到播放,暂停,停止的目的。首先跟media server建立连接 SETUP:具体的格式如下(UDP):C-原创 2013-05-06 13:53:37 · 8024 阅读 · 9 评论 -
android多媒体框架之流媒体具体流程篇2----base on jellybean(十二)
上篇我们讲了流媒体RTSP部分的setdataSource方法,prepare没有实质的东西,我们直接讲start方法, 这个方法是它的核心方法,比较复杂,我们先来看下整个start方法的时序图吧,让大家有个大概的了解: 跟踪下代码,看看start里面有什么名堂?NuPlayer.cppvoid NuPlayer::start() { (new AMessage原创 2012-11-09 10:18:34 · 12493 阅读 · 16 评论 -
android多媒体本地播放流程video playback--base on jellybean (三)
上一篇我们讲了多媒体的总体框架,本章我们先来讨论媒体文件的本地播放,也是手机的基本功能。现在市面上的手机配置越来越高,支持高清视频(1920x1080P)已不在话下。那现在android主流播放器都支持哪些媒体格式呢?一般来说mp3,mp4,m4a,m4v,amr等大众格式都是支持的,具体支持成什么样这得看手机厂商和芯片厂商了。具体格式大全可以看framework/base/media/java/原创 2012-08-27 22:59:23 · 20722 阅读 · 6 评论 -
android多媒体框架之流媒体具体流程篇1----base on jellybean(十一)
病了两周,一吃医生开的药就加重,NND以后不去那儿看病了,最近好多了但人也懒了,也好久没有更新博文了,难道我的计划要这样的搁浅了?NO!生命不息,笔耕不辍,哈哈,有点夸大了,嘚吧嘚吧啥,进入正题.上面我们把流媒体的框架和里面的消息机制讲了一遍,下面我们开搞流程了。我们首先探讨android里的主流支持的RTSP相关的流程。RTSP协议相关的,不了解的,可以回头去看看:http://blog原创 2012-10-29 11:21:33 · 12904 阅读 · 3 评论 -
android多媒体框架之流媒体框架----base on jellybean(九)
android流媒体框架是从Gingerbread android2.3的时候加入的,其核心就是nuplayer。android 流媒体在4.1上资源文件主要分为httplivesource,rtspsource,genericsource.genericsource是4.1上加入的。其中Rtsp流和httplive流是最主要的,两者有本质的区别。RTSP source是客户机在向视频服务器请原创 2012-10-09 10:56:40 · 21300 阅读 · 4 评论 -
android多媒体框架之流媒体----base on jellybean(八)
----------------------------------------转载请注明出处http://blog.csdn.net/tjy1985/article/details/7996121------------------------------------------------------- 从这篇开始我们将进入流媒体的环节,流媒体在android中有nuplayer原创 2012-09-19 15:06:59 · 28219 阅读 · 7 评论 -
Android Multimedia Framework 架构--base on jellybean(二)
转载请注明出处:太妃糖出品。哈哈 我们学习一种新事物必然首先都要对该事物要有个大体的了解,熟悉它的整体架构,然后进行划分归类,接下来才是各个击破,逐步学习乃至掌握。对于要学习android Multimedia的人来说也是如此,先来个总括吧 !我打算分三部分来讲解,请听我娓娓道来....一:多媒体简介 为啥要讲多媒体的概念呢?可能很多人都对这个名称解释不怎么了解,所以原创 2012-08-22 22:27:10 · 25797 阅读 · 20 评论 -
android 多媒体文件之mp4分析(续)---base on jellybean(七)
Sample Table Box(stbl)“stbl”几乎是普通的MP4文件中最复杂的一个box了。sample是媒体数据存储的单位,存储在media的chunk中,chunk和sample的长度均可互不相同。chunk是几个sample的集合。“stbl”包含了关于track中sample所有时间和位置的信息,以及sample的编解码等信息。利用这个表,可以解释sample的时序、类型、大原创 2012-09-14 14:23:09 · 11324 阅读 · 1 评论 -
android 多媒体文件之mp4分析---base on jellybean(六)
我们讲多媒体,涉及到的最多的就是MP4文件和MP3文件了,但是我们对这两个文件的格式了解多少呢,它的由有哪些部分部分组成呢?它的核心部件是哪些?它哪些部分是供解码器去解析的呢?带着这些疑问,我们首先来探索下MP4文件。我们首先用MP4Info这个工具来看下MP4的大貌: 从上图我们可以看到MP4文件中的所有数据都装在box中,也就是说MP4文件由若干个box组成,每个box有类型和原创 2012-09-10 15:10:01 · 10838 阅读 · 2 评论 -
android多媒体本地播放流程video playback--base on jellybean (五)
前面两篇文章,我们分别讲了setdataSource和prepare的过程,获得了mVideoTrack,mAudioTrack,mVideoSourc,mAudioSource,前两个来自于setdataSource过程,后面两是prepare。 status_t AwesomePlayer::setDataSource_l(const sp &extractor) {…if (!h原创 2012-09-10 15:04:44 · 13548 阅读 · 6 评论 -
OpenMax IL: component 概述
OpenMax IL 有四个部分组成: 客户端(Client):OpenMax IL的调用者 组件(Component):OpenMax IL的单元,每一个组件实现一种功能 端口(Port):组件的输入输出接口 隧道化(Tunneled):让两个组件直接连接的方式OpenMax IL 中重要的组成部分是component,component是OpenMa原创 2012-03-28 14:27:13 · 6096 阅读 · 1 评论 -
Android Multimedia Framework overview(多媒体框架概述)--base on jellybean(一)
不知为啥今晚突然脑海中闪现出一个念头:写博客!原因有二,其一就是记录下自己的学习所得,巩固自己的知识,温故而知新吧,以前都是光看光想,都没有记录,而且不写下来,领悟估计就差点了,好记忆不如烂笔头啊!其二就是为自己的码农生涯留点纪念,以后也可以给孩子看看自己老爸写的文章!虽说写得不咋地 csdn的博客好久没有更新博文了,今天一进来竟然都有1W多的总访问量,让我很是诧异!让我有了坚持原创 2012-08-21 22:08:13 · 19278 阅读 · 10 评论 -
android多媒体本地播放流程video playback--base on jellybean (四)
上一篇我们讲了mediaplayer播放的第一步骤setdataSource,下面我们来讲解preparesync的流程,在prepare前我们还有setDisplay这一步,即获取surfacetexture来进行画面的展示setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface, jboolean mediaPlayerMust原创 2012-08-30 17:11:25 · 22838 阅读 · 8 评论 -
多媒体的一些基本概念
今天同事突然问我了一些多媒体基本概念的问题,感觉好多都是不太清楚,既然不清楚那就补一补吧。 码率:也叫比特率,表示经过压缩编码后的视音频数据每秒需要用多少个比特来表示,即把每秒显示的图像进行压缩后的数据量,一般采用的单位是kbps即千位每秒。一般来说码率越大,处理出来的文件就越接近原始文件,但文件体积与码率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这原创 2012-08-29 22:41:56 · 11367 阅读 · 7 评论 -
video/audio playback:prepare & start
prepare:启动mQueue,对http://,rtsp://gtalk/,fmradio://rx之类的url进行mAudioTrack/mVideoTrack分离,并根据mAudioTrack/mVideoTrack编码类型选择相应的decode1.framework/base/media/libmediaplayerservice/MediaPlayerService.cpp原创 2012-03-27 11:25:00 · 4043 阅读 · 1 评论 -
video/audio playback:setDataSource
实现video/audio playerback,需要经过如下步骤:MediaPlayer mp = new MediaPlayer(); mp.setDataSource(String URL/FILE_PATH); mp.prepare(); mp.start(); 首先是setDataSource: 创建player,如果url是以content原创 2012-03-27 11:21:23 · 7887 阅读 · 1 评论 -
android多媒体框架之流媒体AHandler消息机制----base on jellybean(十)
为什么我们要谈论流媒体的消息机制呢?因为在流媒体中,类似于我们写APP的时候,为了不阻塞UI线程,我们把利用handler,把UI线程分开异步执行,使用handler去执行某项比较费时的操作,然后异步更新UI线程。流媒体中也是类似的,因为联网,codec都很费时,需要异步执行。handler是java的实现机制,而我们下面要讲的AHandler就是基于C++的实现了。我们知道handler消息原创 2012-10-12 10:22:18 · 16974 阅读 · 7 评论