- 怎样录制直播视频(流媒体源/编码/封装)
- 怎样实时上传直播视频(视频推流: 如何推/往哪里推/推流服务器)
- 怎样播放直播视频(如何看: HLS/rtmp/flv)
- 直播间的用户是如何交互(送礼物/聊天室/弹幕)
直播系统解决方案-搭建你自己的直播平台
- 视频采集与编码: JavaCV FFmpeg
- 直播流服务器: SRS
- 播放器: 网页端 Video.js 安卓端 Vitamio
直播原理:把主播录制的视频,推送到服务器,在由服务器分发给观众观看。
直播环节:推流端(采集、美颜处理、编码、推流)、服务端处理(转码、录制、截图、鉴黄)、播放器(拉流、解码、渲染)、互动系统(聊天室、礼物系统、赞)
一个完整直播app实现流程:采集/滤镜处理/编码/推流/CDN分发/拉流/解码/播放/聊天互动

到底什么是HLS协议?
简单讲就是把整个流分成一个个小的,基于HTTP的文件来下载,每次只下载一些,前面提到了用于H5播放直播视频时引入的一个.m3u8(extended M3U playlist)的文件,这个文件就是基于HLS协议,存放视频流元数据的文件。
WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 HLS 为主(HLS存在延迟性问题,也可以借助 video.js 采用RTMP),PC端则以 RTMP 为主实时性较好
移动端 iOS 和 Android 都天然支持HLS协议,做好视频采集端、视频流推流服务之后,便可以直接在H5页面配置 video 标签播放直播视频, HLS 在 PC 端仅支持safari浏览器,类似chrome浏览器使用HTML5 video标签无法播放 m3u8 格式,可直接采用网上一些比较成熟的方案
Web 前端如何播放 HLS(.m3u8) 视频
- 移动端可直接通过
标签来播放<video>
格式的视频: mobile-hls-video.html.m3u8
- PC端需要通过其他手段(例如 videojs-contrib-hls)来解码
格式的视频, 才能够通过.m3u8
标签或者 flash 来播放: pc-hls-video.html<video>