
android multimedia
文章平均质量分 87
sadamoo
这个作者很懒,什么都没留下…
展开
-
stagefright与opencore对比
1引言Android froyo版本多媒体引擎做了变动,新添加了stagefright框架,并且默认情况android选择stagefright,弃用之前的opencore,仅仅对opencore中的omx-component部分做了引用。Stagefright自android2.0后才添加,其稳定性有待商榷,是否存在bug也未知,opencore自android诞生起便存在,稳定性有保障转载 2013-08-09 15:08:42 · 661 阅读 · 0 评论 -
android多媒体框架之流媒体框架----base on jellybean(九)
android流媒体框架是从Gingerbread android2.3的时候加入的,其核心就是nuplayer。android 流媒体在4.1上资源文件主要分为httplivesource,rtspsource,genericsource.genericsource是4.1上加入的。其中Rtsp流和httplive流是最主要的,两者有本质的区别。RTSP source是客户机在向视频服务器请转载 2013-08-12 12:23:56 · 1526 阅读 · 0 评论 -
]android多媒体框架之流媒体AHandler消息机制----base on jellybean(十)
为什么我们要谈论流媒体的消息机制呢?因为在流媒体中,类似于我们写APP的时候,为了不阻塞UI线程,我们把利用handler,把UI线程分开异步执行,使用handler去执行某项比较费时的操作,然后异步更新UI线程。流媒体中也是类似的,因为联网,codec都很费时,需要异步执行。handler是java的实现机制,而我们下面要讲的AHandler就是基于C++的实现了。我们知道handler消息转载 2013-08-12 12:24:24 · 927 阅读 · 0 评论 -
android多媒体框架之流媒体具体流程篇1----base on jellybean(十一)
病了两周,一吃医生开的药就加重,NND以后不去那儿看病了,最近好多了但人也懒了,也好久没有更新博文了,难道我的计划要这样的搁浅了?NO!生命不息,笔耕不辍,哈哈,有点夸大了,嘚吧嘚吧啥,进入正题.上面我们把流媒体的框架和里面的消息机制讲了一遍,下面我们开搞流程了。我们首先探讨android里的主流支持的RTSP相关的流程。RTSP协议相关的,不了解的,可以回头去看看:http://blog转载 2013-08-12 12:24:56 · 811 阅读 · 0 评论 -
android多媒体框架之流媒体具体流程篇2----base on jellybean(十二)
上篇我们讲了流媒体RTSP部分的setdataSource方法,prepare没有实质的东西,我们直接讲start方法, 这个方法是它的核心方法,比较复杂,我们先来看下整个start方法的时序图吧,让大家有个大概的了解: 跟踪下代码,看看start里面有什么名堂?NuPlayer.cppvoid NuPlayer::start() { (new AMessage转载 2013-08-12 12:25:35 · 1040 阅读 · 0 评论 -
android多媒体框架之流媒体----base on jellybean(八)
----------------------------------------转载请注明出处http://blog.youkuaiyun.com/tjy1985/article/details/7996121------------------------------------------------------- 从这篇开始我们将进入流媒体的环节,流媒体在android中有nuplayer转载 2013-08-12 12:23:14 · 967 阅读 · 0 评论 -
Android_ics_stagefright框架数据流向分析——1,待解码的原始数据从何而来
先明确一点,stagefright框架是典型的事件驱动型,数据的流向也受到事件驱动(driven by event)的影响,在awesomePlayer中主要的驱动事件有:onPrepareAsyncEvent,onVideoEvent,onStreamDone......这些event会在awesomeplayer中维护的TimedEventQueue mQueue中按照时间的顺序被放入转载 2013-09-21 21:25:45 · 994 阅读 · 0 评论 -
Android_ics openmax in stagefright 学习记录------1
这几篇文章是之前学习openmax的输出,记录在这里,希望不要误导菜鸟的同时又能得到牛牛们的指导。android_ics openmax_in_stagefright 再次学习/**在学习android源代码的工程中,一点要时刻牢记C/S架构*任何时刻都要搞清除,这个时候的代码是运行在客户端,*还是服务端,这个对象来之,客户端还是服务端的代理。*/At fir转载 2013-09-21 21:20:16 · 1166 阅读 · 0 评论 -
Android_ics openmax in stagefright 学习记录------2
///////////////////////////////////////////////4,回到awesomeplayer initVideoDecoder()中///////////////////////////////////////////// mVideoSource = OMXCodec::Create( mClient.interface(转载 2013-09-21 21:22:12 · 906 阅读 · 0 评论 -
Android_ICS_OMX_In_Stagefright------>2开始解码(软解)
当应用层调用mediaplayer.start()的时候,在framework层对应的是在awesomeplayer中post一个mVideoEvent到TimedEventQueue中等待被调度。 当其被调度到的时候,会激活回调函数onVideoEvent。 在这个回调函数中,会做音视频的同步处理。代码很长捡关键的贴。 void AwesomeP转载 2013-09-21 21:26:18 · 1611 阅读 · 0 评论 -
【流媒體】H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
一、MP4格式基本概念MP4格式对应标准MPEG-4标准(ISO/IEC14496) 二、MP4封装格式核心概念1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12: ISO ba转载 2013-10-18 11:59:39 · 1081 阅读 · 0 评论 -
YUV颜色编码
YUVYUV是被欧洲电视系统所采用的一种颜色编码方法(属于PAL),是PAL和SECAM模拟彩色电视制式采用的颜色空间。在现代彩色电视系统中,通常采用三管彩色摄影机或彩色CCD摄影机进行取像,然后把取得的彩色图像信号经分色、分别放大校正后得到RGB,再经过矩阵变换电路得到亮度信号Y和两个色差信号R-Y(即U)、B-Y(即V),最后发送端将亮度和色差三个信号分别进行编码,用同一信道发转载 2013-10-22 17:34:08 · 6456 阅读 · 0 评论 -
什么是I帧,P帧,B帧
视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。 简单地说,I帧是关键帧,属于帧内压缩。就是和AVI的压缩是一样的。 P是向前搜索的意思。B是双向搜索。他们都是基于I帧来压缩数据。 I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)P帧表示的是这一帧跟转载 2013-10-22 17:31:13 · 693 阅读 · 0 评论 -
video format
MPEG-4MPEG-4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“動態影像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通過,第二版在1999年12月通過。MPEG-4格式的主要用途在於網上串流、光碟、語音傳送(視訊電話),以及電視廣播。MPEG-4包含了MPE转载 2013-12-24 16:12:49 · 3646 阅读 · 0 评论 -
从头学Android之多媒体--使用MediaRecorder录制音频
MediaRecoder内部类或接口:常用的方法 方法名称 描述 public void setAudioEncoder (int audio_encoder) 设置刻录的音频编码,其值可以通过MediaRecoder内部类的MediaRe转载 2013-12-25 20:33:10 · 792 阅读 · 0 评论 -
实时传输协议:RTP、RTCP、RTSP介绍
http://blog.youkuaiyun.com/heanyu/article/details/6202500RTP(Real Time Transport Protocol) RTP是针对Internet上多媒体数据流的一个传输协议, 由IETF(Internet工程任务组)作为RFC1889发布。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信转载 2013-12-26 15:49:26 · 1766 阅读 · 0 评论 -
Android开机启动流程初探
l Init进程Android系统在启动时首先会启动Linux系统,引导加载Linux Kernel并启动init进程。Init进程是一个由内核启动的用户级进程,是Android系统的第一个进程。该进程的相关代码在platform\system\core\init\init.c。在main函数中,有如下代码: open_devnull_stdio(); log_in转载 2014-04-14 18:22:02 · 716 阅读 · 0 评论 -
android 多媒体文件之mp4分析(续)---base on jellybean(七)
Sample Table Box(stbl)“stbl”几乎是普通的MP4文件中最复杂的一个box了。sample是媒体数据存储的单位,存储在media的chunk中,chunk和sample的长度均可互不相同。chunk是几个sample的集合。“stbl”包含了关于track中sample所有时间和位置的信息,以及sample的编解码等信息。利用这个表,可以解释sample的时序、类型、大转载 2013-08-09 16:43:24 · 866 阅读 · 0 评论 -
android多媒体本地播放流程video playback--base on jellybean (五)
前面两篇文章,我们分别讲了setdataSource和prepare的过程,获得了mVideoTrack,mAudioTrack,mVideoSourc,mAudioSource,前两个来自于setdataSource过程,后面两是prepare。 status_t AwesomePlayer::setDataSource_l(const sp &extractor) {…if (!h转载 2013-08-09 16:42:17 · 1021 阅读 · 0 评论 -
stagefright框架(四)-Video Buffer傳輸流程
這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t OMXCodec::read(...){ if (mInitialBufferS转载 2013-08-09 15:15:55 · 598 阅读 · 0 评论 -
stagefright框架(七)-Audio和Video的同步
講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:(1)當cal转载 2013-08-09 15:18:51 · 527 阅读 · 0 评论 -
video/audio playback:prepare & start
prepare:启动mQueue,对http://,rtsp://gtalk/,fmradio://rx之类的url进行mAudioTrack/mVideoTrack分离,并根据mAudioTrack/mVideoTrack编码类型选择相应的decode1.framework/base/media/libmediaplayerservice/MediaPlayerService.cppst转载 2013-08-09 15:36:11 · 620 阅读 · 0 评论 -
OpenMax IL: component 概述
OpenMax IL 有四个部分组成: 客户端(Client):OpenMax IL的调用者 组件(Component):OpenMax IL的单元,每一个组件实现一种功能 端口(Port):组件的输入输出接口 隧道化(Tunneled):让两个组件直接连接的方式OpenMax IL 中重要的组成部分是component,component是OpenMa转载 2013-08-09 15:39:20 · 648 阅读 · 0 评论 -
Android Multimedia Framework overview(多媒体框架概述)--base on jellybean(一)
不知为啥今晚突然脑海中闪现出一个念头:写博客!原因有二,其一就是记录下自己的学习所得,巩固自己的知识,温故而知新吧,以前都是光看光想,都没有记录,而且不写下来,领悟估计就差点了,好记忆不如烂笔头啊!其二就是为自己的码农生涯留点纪念,以后也可以给孩子看看自己老爸写的文章!虽说写得不咋地 csdn的博客好久没有更新博文了,今天一进来竟然都有1W多的总访问量,让我很是诧异!让我有了坚持转载 2013-08-09 16:17:39 · 1042 阅读 · 0 评论 -
Android Multimedia Framework 架构--base on jellybean(二)
转载请注明出处:太妃糖出品。哈哈 我们学习一种新事物必然首先都要对该事物要有个大体的了解,熟悉它的整体架构,然后进行划分归类,接下来才是各个击破,逐步学习乃至掌握。对于要学习android Multimedia的人来说也是如此,先来个总括吧 !我打算分三部分来讲解,请听我娓娓道来....一:多媒体简介 为啥要讲多媒体的概念呢?可能很多人都对这个名称解释不怎么了解,所以转载 2013-08-09 16:38:37 · 1031 阅读 · 0 评论 -
android多媒体本地播放流程video playback--base on jellybean (三)
上一篇我们讲了多媒体的总体框架,本章我们先来讨论媒体文件的本地播放,也是手机的基本功能。现在市面上的手机配置越来越高,支持高清视频(1920x1080P)已不在话下。那现在android主流播放器都支持哪些媒体格式呢?一般来说mp3,mp4,m4a,m4v,amr等大众格式都是支持的,具体支持成什么样这得看手机厂商和芯片厂商了。具体格式大全可以看framework/base/media/java/转载 2013-08-09 16:39:14 · 918 阅读 · 0 评论 -
android多媒体本地播放流程video playback--base on jellybean (四)
上一篇我们讲了mediaplayer播放的第一步骤setdataSource,下面我们来讲解preparesync的流程,在prepare前我们还有setDisplay这一步,即获取surfacetexture来进行画面的展示setVideoSurface(JNIEnv *env, jobject thiz, jobject jsurface, jboolean mediaPlayerMust转载 2013-08-09 16:41:35 · 1083 阅读 · 0 评论 -
android 多媒体文件之mp4分析---base on jellybean(六)
我们讲多媒体,涉及到的最多的就是MP4文件和MP3文件了,但是我们对这两个文件的格式了解多少呢,它的由有哪些部分部分组成呢?它的核心部件是哪些?它哪些部分是供解码器去解析的呢?带着这些疑问,我们首先来探索下MP4文件。我们首先用MP4Info这个工具来看下MP4的大貌: 从上图我们可以看到MP4文件中的所有数据都装在box中,也就是说MP4文件由若干个box组成,每个box有类型和长度转载 2013-08-09 16:42:51 · 776 阅读 · 0 评论 -
stagefright + omx小结
由于stagefright和openmax运行在两个不同的进程上,所以他们之间的通讯要经过openBinder进行处理,对openBinder这一块还没有了解,所以恕stagefright和openmax之间的通信不能做分析,还有就是本小结不考虑音频这一块,假设视频为MP4封装的AVC编码文件.最早看的是opencore,但opencore兼顾了多平台的移植性而过于复杂,后来就改看stagef转载 2013-08-09 15:11:24 · 609 阅读 · 0 评论 -
stagefright框架(一)Video Playback的流程
在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢 (註1)。[圖1]转载 2013-08-09 15:12:16 · 615 阅读 · 0 评论 -
stagefright框架(二)- 和OpenMAX的運作
Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){ mClient.connect();}stat转载 2013-08-09 15:13:38 · 527 阅读 · 0 评论 -
stagefright框架(三)-選擇Video Decoder
在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的OMXCodec::Create()會回傳video deco转载 2013-08-09 15:14:35 · 650 阅读 · 0 评论 -
stagefright框架(五)-Video Rendering
AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。(1)要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderervoid AwesomePlayer::onVideoEv转载 2013-08-09 15:16:43 · 565 阅读 · 0 评论 -
stagefright框架(六)-Audio Playback的流程
到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。(1)當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動status转载 2013-08-09 15:17:51 · 685 阅读 · 0 评论 -
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://转载 2013-08-09 15:34:46 · 848 阅读 · 0 评论 -
Android中基于NuPlayer的RTSP框架学习
一、整体框架图Android中基于NuPlayer的RTSP框架如下图所示(该图来自网上)。整个图主要分为两个部分,一部分是NuPlayer的架构,另一部分则是实现了基于RTSP的流媒体播放功能,即RTSPSource。当然还有一些其他的Source,如图中的HTTPLiveSource,还有图中没有画出的GenericSource、StreamingSou转载 2014-08-12 12:19:35 · 8587 阅读 · 0 评论