播放器
UI界面
皮肤
UI逻辑
业务逻辑
针对你的定制化需求,你可能选择使用包含所有经典功能的 JW Player 来播放(它也允许你定制部分功能),或者基于 Videojs 这样的开源播放器来定制你自己的功能特性。甚至为了在浏览器和原生播放器之间统一用户体验,你也可以考虑使用 React Native 来进行 UI 或者皮肤的开发,使用 Haxe 来进行业务逻辑的开发,这些优秀的库都可以在多种不同类型的设备之间共用同一套代码库。<br><br>
多媒体引擎
声明文件解释和解析器
下载器
流播放引擎
资源质量参数预估器
ABR切换控制器
DRM管理器(可选)
通过解密过程来控制是否有权播放
格式转换复用器(可选)
解码器和DRM管理器
解码器、渲染器和 DRM 工作流程图
<img src="https://img-blog.csdn.net/20170816145128264?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWZseWVhZ2xlbmt1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">
每个平台都有它自己的渲染引擎和相应的 API:Flash 平台有 Netstream,Android 平台有 Media Codec API,而 Web 上则有标准的 Media Sources Extensions。MSE 越来越吸引眼球,将来可能会成为继浏览器之后其它平台上的事实标准。<br>
Common Encryption (CENC)
现代播放器架构
<img src="https://img-blog.csdn.net/20170816144940314?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWZseWVhZ2xlbmt1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center">