小程序
简介
小程序优势:提供跨平台解决方案;降低开发成本;具有平台优势,适合推广;用户体验好
类似小程序的技术:
- Cordova:通过webview渲染,通过插件调用系统服务
- PWA:Service Worker和Push API
- React Native/Weex:通过JSCore执行,通过Bridges和Native组件交互
- Flutter:Dart直接与独立系统的UI库交互
微信小程序内部架构
双线程模型:分成渲染层和逻辑层;渲染层使用webview线程进行渲染,逻辑层采用JsCore线程执行JS代码,小程序的每个页面都有一个独立的webview渲染线程;渲染层与逻辑层通过Native进行通信,且网络请求也由Native进行转发。
生命周期:(如下图所示)
小程序的发展
-
多端同构框架 eg:uni-app、Taro、KBone
-
小程序自动化
-
硬件框架
-
云IDE(支付宝)
-
W3C小程序工作组提案
Web前端点播直播入门
视频存储
文件扩展名≈媒体封装格式;媒体封装格式≠音频编码格式
媒体文件内容包括:头信息、索引信息、视频数据、音频数据、附加增强数据
视频数据:
- 显示器颜色呈现基于RGB颜色空间模型
- 视频领域大多基于YUV颜色空间做抽样存储
- 帧内预测&帧间预测复用进一步有效的压缩数据
- P帧(向前预测真)、B帧(双向预测帧)、I帧(参考帧)
- 视频编码器
音频数据:
- 对连续声波采样,做数字化PCM存储
- 扬声器将PCM(脉冲编码调制)数字信号转为模拟音频信号
- 音频压缩基本算法:预测、变换
- 音频编码器
传输协议
- 流媒体(直播):
- HLS:苹果利用现有的CDN设施而发明的“流媒体”协议
- HTTP(S)-FLV:基于HTTP的流媒体协议
- RTMP、RTP/RTSP、TS、MMS
- 点播传输:HTTP(S)
- Web端:HTTP(S)、WS(S)、P2P…
播放器原理
- 解协议(加载数据)
- 解封装(解复用)
- 解码
- 渲染
相关Web API
getUserMedia、MediaRecorder、MediaSource
点播与直播
- 点播:创作者上传 => 转码 => 存储 <=> CDN分发 <=> 观众
- 直播:创作者 => 推流 <=> 存储 <=> 转码 <=> CDN分发 <=> 观众