一、视频协议:
目前直播主流的协议有HLS和RTMP。
- HLS基于HTTP请求、响应。适合移动端。IOS支持比较好,高版本的android也支持。兼容问题网上有一些方案,sewise-player、MediaElement、videojs-contrib-hls、jwplayer;
优点:适应性好、跨平台;缺点:有延迟现象。- RTMP基于falsh。延迟小、实时性好。适合PC端、互动性比较强。HTML5 video标签无法播放 RTMP 协议的视频,可以通过 video.js 来实现。
adobe公司到2020停止falsh。
二、直播流程:
- 采集端:通过摄像头、麦克风在电脑或者手机上采集;
- 服务端:通过服务器将采集的视频编译,然后推送到视频播放端;
- 播放端:播放端有手机电脑的播放器,H5的video标签、客户端的native播放器
三、直播形式:
- 底部H5的video视频层当背景播放
- 关注、评论、赞赏层,通过ajax时时发送或者获取信息
四、直播技术中的坑:
- autoplay中IOS中不支持,可以在clik、touch等事件中调用video.paly();
- 内联播放,playsinline;
- 视频层级问题,如果是QQ浏览器或者微信中,可以加
x5-video-player-type="h5"
和x5-video-player-fullscreen="true"
; - video事件很多不支持,
timeupdate
和ended
; - 全屏问题,
webkitEnterFullscreen()
或webkitRequestFullScreen()
;可以使用伪全屏的方式,就是设置video的宽高100%; - 去掉IOS默认播放图标
video::-webkit-media-controls-start-playback-button { display: none; }