NuPlayer 分析(一)

本文介绍了Android系统中Nuplayer和Mediaplayer的角色与工作原理。Nuplayer自Android5.0起逐渐取代Stagefright,支持更多播放协议。Mediaplayer通过Java层创建,并由MediaPlayerService根据播放类型配置。

Nuplayer 主要是负责流媒体播放流,在Android5.0之后开始取代Stagefright 支持更多的播放协议。

Mediaplayer 在Java层创建播放器之后,MediaPlayerService在SetDataSource时候根据播放类型创建相应的播放器;

MediaPlayerService在开机初始化时候注册播放器MediaPlayerFactory::registerBuiltinFactories();

    

  player_type playerType = MediaPlayerFactory::getPlayerType(this, source); 

### 三级标题:AwesomePlayer与NuPlayer的对比分析 在IT领域,特别是在Android多媒体框架中,AwesomePlayerNuPlayer是两个关键的媒体播放器实现。它们在架构设计、性能表现以及适用场景上各有特点。 #### 架构差异 AwesomePlayer基于OMXCodec进行开发,依赖于OpenMAX IL接口来完成音视频解码工作。这种设计使得它能够较好地支持硬件加速解码功能,但同时也带来了较高的系统资源消耗[^1]。相比之下,NuPlayer则采用了更为先进的Acodec组件作为其核心解码模块。Acodec不仅提供了对软硬混合解码的支持,还通过ALooper/AHandler机制实现了高效的异步消息处理流程,从而显著降低了线程间同步所带来的开销[^1]。 #### 性能表现 由于使用了更底层的消息传递模型,NuPlayer能够在处理大规模并发请求时保持较低的延迟水平,并且减少了锁竞争现象的发生频率。这直接导致了整体吞吐量的提升以及用户体验上的改善[^1]。另方面,虽然AwesomePlayer同样具备不错的实时性控制能力,但由于其内部存在较多互斥锁操作,在高负载环境下可能会出现定程度的性能瓶颈。 #### 扩展性兼容性 从扩展角度来看,NuPlayer展现出了更强的优势。它可以轻松适应多种新型编码格式及传输协议的变化需求,例如HTTP Live Streaming (HLS) Real Time Streaming Protocol (RTSP) 等[^3]。同时,NuPlayer内置了套灵活的内容源识别机制,可以根据输入流类型自动选择最合适的解析策略(如GenericSource, HTTPLiveSource等)[^4]。而AwesomePlayer在这方面的灵活性稍逊筹,通常需要针对特定应用场景做出额外调整才能达到最佳效果。 #### 应用场景 对于那些追求极致效率并希望充分利用现代移动设备硬件加速特性的应用来说,NuPlayer无疑是首选方案。尤其适用于在线视频直播、高清电影回放等领域[^2]。而对于些老旧项目或者对现有代码库有特殊依赖的情况,则可能更适合继续沿用AwesomePlayer以减少迁移成本。 综上所述,尽管两者都能胜任基本的音频/视频播放任务,但在具体实施过程中仍需根据实际业务需求技术条件作出合理抉择。 ```cpp // 示例代码展示如何设置视频表面纹理 void NuPlayer::setVideoSurfaceTextureAsync(const sp<IGraphicBufferProducer>& bufferProducer) { sp<AMessage> msg = new AMessage(kWhatSetVideoSurface, this); if (bufferProducer == NULL) { msg->setObject("surface", NULL); } else { msg->setObject("surface", new Surface(bufferProducer, true /* controlledByApp */)); } msg->post(); } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值