11 2014 档案

摘要:在用SourceInsight分析VLC-Android源码过程中,有几个宏定义在源代码中一直没有找到出处,比如 HAVE_DYNAMIC_PLUGINS和__PLUGIN__,以及MODULE_NAME和MODULE_STRING,在网上找了VLC源码的分 析资料都是老版本的,老版本中MODULE... 阅读全文
posted @ 2014-11-26 15:56 rlandj 阅读(698) 评论(0) 推荐(0) 编辑
摘要:FFMPEG中结构体很多。最关键的结构体可以分成以下几类:a)解协议(http,rtsp,rtmp,mms)AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入 视音频使用的封装格式。每种协议都对应一个URLPro... 阅读全文
posted @ 2014-11-25 16:30 rlandj 阅读(409) 评论(0) 推荐(0) 编辑
摘要:0. 背景知识本章主要介绍一下FFMPEG都用在了哪里(在这里仅列几个我所知的,其实远比这个多)。说白了就是为了说明:FFMPEG是非常重要的。使用FFMPEG作为内核视频播放器:Mplayer,ffplay,射手播放器,暴风影音,KMPlayer,QQ影音...使用FFMPEG作为内核的Direc... 阅读全文
posted @ 2014-11-25 16:27 rlandj 阅读(2348) 评论(0) 推荐(0) 编辑
摘要:本 文向你讲述如何用android标准的API (MediaCodec)实现视频的硬件编解码。例程将从摄像头采集视频开始,然后进行H264编码,再解码,然后显示。1、从摄像头采集视频 可以通过摄像头Preview的回调,来获取视频数据。 首先创建摄像头,并设置参数:[java]view pl... 阅读全文
posted @ 2014-11-15 10:29 rlandj 阅读(26166) 评论(0) 推荐(1) 编辑
摘要:Finally, I must say, finally, we get low-level media APIs in Android, the Android hardware decoding and encoding APIs are finally available. It was a 阅读全文
posted @ 2014-11-15 10:27 rlandj 阅读(1355) 评论(0) 推荐(0) 编辑
摘要:数据流的封装一、由数据源DataSource生成MediaExtractor。通过MediaExtractor::Create(dataSource)来实现。Create方法通过两步来生成相应的MediaExtractor:1、通过dataSource->sniff来探测数据类型2、生成相应的Ext... 阅读全文
posted @ 2014-11-14 13:57 rlandj 阅读(1561) 评论(0) 推荐(0) 编辑
摘要:主要调用awesomeplay.cpp的函数来实现音视频等功能,可以说是对awesomeplay.cpp的封装,进一步抽象,然后提供给上层调用,主要的调用者是MediaPlayerService.cpp。提供的API如下:1.StagefrightPlayer::StagefrightPlayer(... 阅读全文
posted @ 2014-11-14 13:52 rlandj 阅读(447) 评论(0) 推荐(0) 编辑
摘要:讲完了audio和video的处理流程,接下来要看的是audio和video同步化(synchronization)的问题。OpenCORE的做法是设置一个主clock,而audio和video就分别以此作为输出的依据。而在Stagefright中,audio的输出是透过callback函式来驱动,... 阅读全文
posted @ 2014-11-14 13:50 rlandj 阅读(643) 评论(0) 推荐(0) 编辑
摘要:到目前为止,我们都只着重在video处理的部分,对于audio却只字未提。这篇文章将会开始audio处理的流程。Stagefright中关于audio的部分是交由AudioPlayer来处理,它是在AwesomePlayer::play_l中被建立的。(1) 当上层应用程式要求播放影音时,Audio... 阅读全文
posted @ 2014-11-14 13:49 rlandj 阅读(606) 评论(0) 推荐(0) 编辑
摘要:AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。(1)要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRendererv... 阅读全文
posted @ 2014-11-14 13:48 rlandj 阅读(393) 评论(0) 推荐(0) 编辑
摘要:這篇文章將介紹Stagefright中是如何和OMX video decoder传送buffer。(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來status_t OMXCodec::read(...){i... 阅读全文
posted @ 2014-11-14 13:47 rlandj 阅读(615) 评论(0) 推荐(0) 编辑
摘要:在《Stagefright (1) – Video Playback的流程》中,我们并没有详述Stagefright是如何根据影片档的类型来选择适合的video decoder,现在,就让我们来看一看。(1) Video decoder是在onPrepareAsyncEvent中的initVideo... 阅读全文
posted @ 2014-11-14 13:46 rlandj 阅读(818) 评论(0) 推荐(0) 编辑
摘要:Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。(1) OMX_InitOMXClient mClient;AwesomePlayer::AwesomePlayer(){mClient.c... 阅读全文
posted @ 2014-11-14 13:41 rlandj 阅读(634) 评论(0) 推荐(0) 编辑
摘要:在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。 OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從 Android 2.0開始,Google引進了架構稍... 阅读全文
posted @ 2014-11-14 13:40 rlandj 阅读(626) 评论(0) 推荐(0) 编辑
摘要:1.android中用openmax来干啥?android中的AwesomePlayer就 是用openmax来做(code)编解码,其实在openmax接口设计中,他不光能用来当编解码。通过他的组件可以组成一个完整的播放器,包括 sourc、demux、decode、output。但是为什么and... 阅读全文
posted @ 2014-11-14 09:54 rlandj 阅读(3670) 评论(0) 推荐(0) 编辑
摘要:1.openmax 简介http://www.khronos.org/openmax/OpenMax是一个多媒体应用程序的框架标准,由NVIDIA公司和Khronos在2006年推出。OpenMAX分为3层:第一层:OpenMaxDL(DevelopmentLayer,开发层)第二层:OpenMax... 阅读全文
posted @ 2014-11-14 09:51 rlandj 阅读(6734) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示