HTML5 Video实现浅析
——基于android4.1browser
1. 基本结构
先上一张基本结构图,图中展示了webkit中与HTML5 Video实现相关的一些类。
1.1 DOM Tree
Video标签在webkit内部对应于HTMLVideoElement类,该类的功能并不多,大多数的功能都在其父类HTMLMediaElement中。
1.2 Render Tree
HTMLVideoElement和HTMLMediaElement分别对应的Render节点是RenderVideo和
RenderMedia。它们也一般的Render节点不同,它们只负责layout来确定位置信息,而并不需要绘制(虽然有paint函数,但实际并没
有调用到)。
1.3 Bridge
MediaPlayer类指的是WebKit中定义的MediaPlayer类(而不是系统定义的),它只是一个桥接类,相关功能交由MediaPlayerPrivateInterface类实现,并将某些反馈信息回调给HTMLMediaElement。
1.4 Player
按照webkit的一贯风格,MediaPlayerPrivateInterface只是一个基类,具体需要不同的平台来提供具体实现。
Android平台下为MediaPlayerPrivate类,它也是一个基类,分别由MediaPlayerVideoPrivate和
MediaPlayerAudioPrivate来实现。很显然,它们分别对应Video和Audio的实现。
上述是webkit内的类,下面再看看webkitporting之后外部的类结构:
可以看到,这些类大多数都是轻量级类,它们主要负责功能转发。最终实现类是android中的MediaPlayer类(请与前述
MediaPlayer区别开来)。至于该MediaPlayer再怎么实现