【Android多媒体】Android5.0 NuPlayer多媒体框架【1】

本文介绍了Android系统中NuPlayer的架构与实现原理。NuPlayer作为Android 2.3版本引入的流媒体框架核心组件,在5.0版本中得到进一步发展。它采用StagefrightPlayer的基础类构建,并通过ALooper/AHandler机制异步处理请求,实现本地及流媒体播放功能。文章还对比了NuPlayer与AwesomePlayer的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android流媒体框架在Gingerbread Android2.3版本的时候加入的,其中实现的核心就是NuPlayer。在之前的版本中一般认为Local Playback就用Stagefrightplayer+Awesomeplayer,流媒体用NuPlayer。从现在来看,NuPlayer大有替换掉StagefrightPlayer+AwesomePlayer的趋势,现在NuPlayer也可以完美地实现本地播放。

在实现上NuPlayer和Awesomeplayer不同,NuPlayer基于StagefrightPlayer的基础类构建,利用了更底层的ALooper/AHandler机制来异步地处理请求,ALooper列队消息请求,AHandler中去处理,所以有更少的Mutex/Lock在NuPlayer中。AHnadler机制请参考前面的一篇文章,AHandler机制
Awesomeplayer中利用了omxcodec而NuPlayer中利用了Acodec。

Android流媒体在5.0上资源文件主要分为HTTPLiveSource、RTSPSource GenericSource,其中GenericSource是4.1版本加入的。其中RTSP和HLS流是最主要的,两者本别基于RTSP协议和HLS协议。
这里写图片描述
NuPlayer整体架构

NuPlayer::Source is the parser module. Actually its interface looks like a combination of MediaExtractor and MediaSource, and it also makes seekTo as an explicit API now.

NuPlayer::Decoder connects to ACodec for AVC decoding, and to DecoderWrapper for AAC decoding, which in turn wrapps AAC software decoder in the OpenMAX style. ACodec is functionally similar as OMXCodec in Stagefright, besides the application of State pattern and passing MediaBuffers around with messages.

NuPlayer::Render is responsible for rendering audio and also controls when to post video buffers back to NativeWindow for A/V sync.


http://blog.youkuaiyun.com/mandagod/article/details/47207511

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值