- RTMP 协议:https://www.jianshu.com/p/d511d59b185c
- RTMP、RTSP、HTTP视频协议详解(附:直播流地址、播放软件):https://www.hangge.com/blog/cache/detail_1325.html
- RTMP、HTTP-FLV、HLS,你了解常见的三大直播协议吗:https://zhuanlan.zhihu.com/p/48100533
- 网络协议-流媒体协议
推流协议
- 虽然 RTMP 在直播领域不是特别流行,但是在推流服务,也就是“主播”到“服务器”这个方向上 RTMP 居于主导地位,目前国内的视频云服务都是以 RTMP 为主要推流协议(由于直播 SDK 第一个功能模块就是主播推流,所以也被称为是 RTMP SDK)。
播放协议
目前常见的直播协议包括:RTMP、 FLV、HLS 和 WebRTC。
RTMP:RTMP 协议比较全能,既可以用来推送又可以用来直播,其核心理念是将大块的视频帧和音频帧拆分,然后以小数据包的形式在互联网上进行传输,而且支持加密,因此隐私性相对比较理想,但拆包组包的过程比较复杂,所以在海量并发时也容易出现一些不可预期的稳定性问题。
FLV:FLV 协议由 Adobe 公司主推,格式极其简单,只是在大块的视频帧和音视频头部加入一些标记头信息,由于这种简洁,在延迟表现和大规模并发方面都很成熟,唯一的不足就是在手机浏览器上的支持非常有限,但是用作手机端 App 直播协议却异常合适。
HLS:苹果推出的解决方案,将视频分成5秒 - 10秒的视频小分片,然后用 m3u8 索引表进行管理,由于客户端下载到的视频都是5秒 - 10秒的完整数据,故视频的流畅性很好,但也同样引入了很大的延迟(HLS 的一般延迟在10秒 - 30秒左右)。相比于 FLV, HLS 在 iPhone 和大部分 Android 手机浏览器上的支持非常给力,所以常用于 QQ 和微信朋友圈的 URL 分享。
WebRTC:名称源自网页即时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的API。它于2011年06月01日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 推荐标准。快直播正是用的 WebRTC 协议,它是标准直播在超低延迟播放场景下的延伸,比传统直播协议延迟更低,为观众提供毫秒级的极致直播观看体验。 能够满足一些对延迟性能要求更高的特定场景需求,例如在线教育、体育赛事直播、在线答题等。
RTC技术(WebRTC)
RTC(Real time communication)实时通信,是实时音视频的一个简称,我们常说的RTC技术一般指的是WebRTC技术,已经被 W3C 和 IETF 发布为正式标准。
解决什么问题
- 直播中我们关心的几个点:延迟、质量、成本等。 传统rtmp直播痛点:TCP,延迟高、拥塞导致卡顿问题较多(质量问题)。 互联网网络复杂、延时敏感、实时音视频流畅度及清晰度较低以和运营成本较高等。 没有一项技术能兼顾并解决直播中的所有问题,RTC是时延、流畅、质量、成本等的平衡,成为技术选型落地的模型。
RTC VS RTMP
RTC (UDP) VS RTMP (TCP)
RTMP只是TCP上的一个标准协议,所以接入是一个标准体系,推流端可以是OBS这种直播软件工具,也可自开发rtmp推流工具,播放端可以是Flash播放器(Adobe 2020 12月份已经弃用)、服务端有技术成熟的CDN技术和设施进行分发、Native的播放器或者flv.js/hls.js这种开源播放器组件,遵循rtmp、flv、hls标准即可,接入成本比较低。而一个完善的RTC服务应用,需要从推流端、服务端、到拉流端,一整套完整的全链路闭环技术。
RTC+RTMP
- 互动连麦+服务端转推rtmp至CDN,CDN分发给观众。
RTC的应用场景
- 视频会议、在线教育小班课、大班课、1v1视频连麦、多人视频连麦互动、语音聊天室、在线面试、在线医疗、云游戏、智能家居、在线签约、在线K歌等,遍地开花。 比如Zoom、腾讯会议、钉钉会议、微信音视频聊天
RTC服务提供商
- 声网、腾讯云音视频、即构、阿里云RTC、华为云RTC、微吼VRTC、网易云信RTC、Ucloud RTC、融云RTC、拍乐云等。
腾讯云音视频
- https://cloud.tencent.com/document/product/267/70440
- 在开播端,基于实时音视频 TRTC 来实现,通过 TRTC 协议完成主播推流。仅需1个TRTC应用 + 1个推流域名,即可把主播的直播流推流至云端。在观众端,默认情况下,使用 CDN 方式进行拉流观看, CDN 观看费用较低。如果主播端有 PK 需求,直接互相播放对方的流即可。
即构
- https://doc-zh.zego.im/article/5416
- 语聊房:https://doc-zh.zego.im/article/4903
- 麦上用户可以发起混流,即把多路音频流混合成单流。推流后混流,麦下用户在拉流时只需要拉一路流即可收听所上麦上用户的互动音频,降低开发实现上的复杂性以及对设备的性能要求。
- 秀场直播:https://doc-zh.zego.im/article/11202

