Safari中的视频相关操作封装在QuickTime Plugin里面,存放于/Library/Internet Plugin目录下。
下图是相关类的class diagram:
其中的QuickTime Plugin是通过已淘汰的Apple之前定义的Webkit Plugin协议来实现的,而不是现在支持的Netscape API的机制。
可以参考以下文档:
Safari/WebKit
的源代码里仍然有对WebKit Plugin
的支持,
也就是为了视频的插件。
另外Safari并不是通过HTMLMediaElement::platformLayer()提供的CALayer,而是通过Widget::platformWidget()来返回CALayer的。
以下是几张时序图帮助理解交互过程:
创建过程:
点击play按钮的操作序列:
释放的时序图:
下面是FigPluginView的类图,方便理解它内部的实现:
*最新UML图可以到GitHub中下载。
上一篇: Webkit中HTML5 Video的实现分析(五) - WebKit中视频事件的传递