(2)android MediaPlayer 和Nupalyer、MediaCodec、OMX关系

基于android 10/11, 总览一下MediaPlayer 中的给模块功能,角色定位。
查看源码可以在下几个目录 :

android\frameworks\base\media\java\android\media
android\frameworks\base\media\jni
android\frameworks\av\media\libmedia
android\frameworks\av\media\libmediahelper
android\frameworks\av\media\libmediaplayerservice
android\frameworks\av\media\libstagefright

1. mediaplayer  采用CS(客户端服务端模式) 服务端:MediaPlayerService

2. mediaPlayer 服务端内部类 Client, 使用抽象工厂模式,MediaPlayerFactory ,耦合创建NuplayerFactory->NuplayerDriver->Nuplayer (AwesomePlayer什么的已经去除了)

3. NuPlayer 作为一个native层的Player, 具备 标准的三个模块:demuxer、decoder、render. 这里即对应Source Decoder Render。 完全具备一个player所有的功能

3.1 source 中有多种输入的支持,http、rtsp 、StreamSrouce和最常用的GenericSource.
        GenericSource即使用到了MediaExtracor,从文件中解析出track

3.2 . Decoder 包装了MediaCodec. (android 也对外开放了MediaCode,包括java层的和Ndk C层的接口 顾名思义也就是媒体编解码)。 
MediaCodec 又转而使用ACodec, (ACodec, 即android codec),注意这里各种命名和包装的关系,很有层次感,并不是无端就这么多层次来恶心人的。 ACodec 才是android平台上codec的实现,但是为了屏蔽硬件厂商的实现差异,对上提供统一的接口,android 上对硬件厂商提供的编解码器用openMax 标准接口进行规范,(原本上openMax不仅仅规定了code的接口形式,甚至是demuxer都有,一套组件接口,但是android 只是使用了 code)。 所以 以OMX接口规范为分割, 纯软件架构层在OMX接口以上, 硬件厂商的具体具体功能已OMX规范提供组件库。
3.3 Render  这里面有时间戳的控制,用于同步音视频的控制等,待进一步分析。

Nuplayer:

补充两张以前分析不怎么规范的图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值