WebRTC → 传统直播(非实时)系统浅析

本文浅析了WebRTC和传统直播系统,重点关注实时性和延迟问题。传统直播通常使用RTMP和HLS协议,RTMP实时性较好但iOS不支持,HLS延迟较高但连通性佳。WebRTC基于UDP,提供更低延迟的互动体验,适用于在线教育和音视频会议。文章还探讨了CDN、推流拉流、信令服务器和流媒体协议的优缺点。
摘要由CSDN通过智能技术生成

传统直播架构

直播系统可以简单的分为实时互动直播传统直播实时互动直播注重于传输的实时性(因此采用UDP作为底层协议),如在线教育、音视频会议等,传统直播则注重的是画面质量、音视频是否卡顿的问题(因此采用TCP作为底层传输协议),如娱乐直播等

商业级别的直播系统结构是非常复杂的,除了核心的音视频直播外,还包括用户管理、认证系统、直播间管理、私信等业务逻辑

直播客户端

直播客户端主要包括音视频数据的采集、编码、推流、拉流、解码和播放等功能

  • 客户端主要用途分类
    • 主播使用的客户端
      • 包括音视频采集、编码和推流的功能
      • 可以从直播设备上采集对应数据,然后对采集的音视频数据进行编码,最后将编码后的音视频数据按RTMP协议推送给CDN源节点(RTMP接入服务器)
    • 观众使用的客户端
      • 包括拉流、解码与渲染(播放)的功能
      • 观众端主要实现了一个播放器的功能,开源的有两个成熟的项目集成后就可以基本实现对应的功能(ljkplayer和VLC)

信令服务器

主要用于接收信令,并根据信令处理一些和业务相关的逻辑,如创建房间、加入房间、离开房间、送礼物、文字聊天等

  • 注意点
    • 一定要关注和防止消息的洪范

CDN网络

主要用于媒体数据的分发

主播推流浅析

  • 向信令服务器发送「创建房间」的信令,并收到信令服务器返回的推流地址信息(CDN网络源站地址) - 步骤①
  • 主播客户端将采集到的音视频数据进行编码,生成RTMP消息,最终将媒体流推送给CDN网络 - 步骤②
  • 步骤③和④与①和②一样,只是设备不同
  • 观众向信令服务器发送「加入房间」的消息,信令服务器根据用户地区,分配一个最近的CDN边缘节点 - 步骤⑤
  • 观众收到CDN地址后进行拉流和渲染 - 步骤⑥
  • 在传统直播中,一般推流端使用RTMP协议,拉流端可以使用RTMP协议或者HLS协议

RTMP协议与HLS协议

RTMP协议

RTMP(Real Time Messaging Protocol:实时消息协议,默认端口1935,可能会被防火墙屏蔽),一般情况下最少会有几秒到几十秒的延迟,底层是基于TCP协议的,其传输格式是RTMP Chunk Format,媒体流数据的传输和RTMP控制消息的传输都是基于此格式的,在使用RTMP协议传输数据之前,RTMP也像TCP协议一样,先进行三次握手才可以建立连接;

优势

  • 底层依赖于TCP协议,不会出现丢包,乱序等问题,因此音视频业务质量有很好的保障;
  • 使用简单,技术成熟,有现成的RTMP协议库实现,如FFmpeg项目中的librtmp库等
  • 市场占有率高,相较于HLS协议,实时性要高很多


劣势

  • iOS不支持该协议,理由是有较大的安全缺陷,现在该协议已经停止更新了
  • 不支持h.265

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值