直播推流

什么叫推流?

  • 推流是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验很是糟糕。

  • 要想用于推流还必须把音视频数据使用传输协议进行封装,变成流数据。常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于手机直播这种实时性要求非常高的场景,RTMP也成为手机直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。

扩展资料:

直播中使用广泛的“推流协议”一般是RTMP(Real Time Messaging Protocol——实时消息传输协议)。该协议是一个基于TCP的协议族,是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。

在高精尖沙龙直播中,最初使用传统设备进行“推流”。

具体过程就是:通过网线将EFP系统中的切换台、网络编码器、笔记本按顺序连接,连接完成后确保笔记本电脑的IP地址和网络编码器的地址在同一网段,然后在电脑页面上对编码器的各种“推流参数”进行调整,为保证正常“推流”,还需设置网络推流地址,输入推流地址、直播地址、视频模式、分辨率、码率、播放域名、播放地址等内容。设置完毕后确认IP地址,再进行网络测速,并确保网络与网络编码器连接正常。此种“推流”所需设备过多,出现问题后十分麻烦,需要对设备进行逐一排查,极耗费时间。

后来,将直播系统改为Livestudio系统,“推流”内置在Livestudio的软件之中,整个“推流”过程不再需要额外的网络编码器和笔记本等设备,也无需再设置IP,只要网络正常,联网即可完成操作,还可根据网络的实际情况设置“推流”的质量以满足要求。此种操作十分便捷,有效避免了上述问题的出现。

推流

  • 推流必须把音视频数据使用传输协议进行封装,变成流数据。
  • 常用的流传输协议有RTSP、RTMP、HLS等,使用RTMP传输的延时通常在1–3秒,对于手机直播这种实时性要求非常高的场景,RTMP也成为手机直播中最常用的流传输协议。最后通过一定的Qos算法将音视频流数据推送到网络断,通过CDN进行分发。
  • 在直播场景中,网络不稳定是非常常见的,这时就需要Qos来保证网络不稳情况下的用户观看直播的体验,通常是通过主播端和播放端设置缓存,让码率均匀。另外,针对实时变化的网络状况,动态码率和帧率也是最常用的策略

推流实现方案

  • 网络传输方面全部自己做花费较大(基本不现实)
  • 国内提供推流服务的CND服务商云视频服务商
  • 阿里云是国内唯一能自研CDN缓存服务器的厂商,性能还是非常优越
  • 大多数直播平台都会同时接入多个视频云服务提供商,这样可以做拉流线路互备,对推流后视频集群再进行优化也可提高直播的流畅性和稳定性。
  • 趣拍直播SDK依托阿里云的CDN和趣拍成熟的直播技术保障直播快速接入APP。

CDN

  • 基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求。
  • 内容分发网络(CDN)是一个经策略性部署的整体系统,包括分布式存储、负载均衡、网络请求的重定向和内容管理4个要件。
内容分发技术
  • 分段分发技术

    • 流媒体对边缘内容的完整性没有要求,节点只需存储少量的节目或节目片段即可实时推送内容,为用户提供完整的服务。当用户点播的内容只有部分片段或没有时,系统将采用分发技术进行内容的快速分发。
  • 部分分发技术

    • 部分分发技术可提升边缘系统的命中率,如果对10%的内容采用全复制,20%的内容采用50%复制,50%的内容采用10%复制,那么,系统可以实现95%以上的命中率,大大降低骨干网的负荷,具有优越的分发性能。
负载均衡技术编辑
  • 负载均衡是整个CDN的核心,负载均衡的准确性和效率直接决定了整个CDN的效率和性能。 负载均衡技术将网络的流量尽可能均匀地分配到几个能完成相同任务的服务器或网络节点上进行处理,避免部分网络节点过载而另一部分节点空闲的不利状况,既可以提高网络流量,又可以提高网络的整体性能。
CND技术点
  • 内容发布:它借助于建立索引、缓存、流分裂、组播(Multicast)等技术,将内容发布或投递到距离用户最近的远程服务点(POP)处;
  • 内容路由:它是整体性的网络负载均衡技术,通过内容路由器中的重定向(DNS)机制,在多个远程POP上均衡用户的请求,以使用户请求得到最近内容源的响应;
  • 内容交换:它根据内容的可用性、服务器的可用性以及用户的背景,在POP的缓存服务器上,利用应用层交换、流分裂、重定向(ICP、WCCP)等技术,智能地平衡负载流量;
  • 性能管理:它通过内部和外部监控系统,获取网络部件的状况信息,测量内容发布的端到端性能(如包丢失、延时、平均带宽、启动时间、帧速率等),保证网络处于最佳的运行状态。
  1. 需求背景
  • 看宝宝与明日之星是贝聊的视频直播产品,目前只是使用七牛一家的直播云服务。基本业务是通过摄像头设备或老师的手机直播,推流到七牛,家长通过H5的页面观看。业务流程图如下:

  • 可以明显发现:贝聊服务端和客户端都完全依赖七牛云的服务,万一七牛云出现故障,整个视频直播产品就瘫痪了!于是我们的需求就诞生了:接入另一家直播云服务商,提高服务可用性。如此一来,既可做为容灾,也可做流量切换。
  1. 直播云服务商选择
  • 经过调研,我们锁定的备选服务商有腾讯云、阿里云、金山云、网易云。新的直播云服务商选择,不能拍脑袋决定。需要考虑各服务商的优缺点、成本以及是否能满足我们的功能要求等。总结主要有以下几点:
  • 客户端的限制:我们的贝聊老师版APP,安卓系统要求最低是版本4.0,而阿里云和网易云要求最低版本是4.3
  • 现有功能点的限制:产品已经上线,新的服务商应与七牛的功能相似,包括推拉流、鉴权、定时截图、状态回调通知、保存回放等
  • 成本的问题:腾讯云成本最高,阿里云和金山云相对较低
    • 由于客户端的限制,备选服务商基本锁定在腾讯云和金山云。既然是作为备用,成本就是次要因素了,稳定可靠才是我们的核心关注点。因此,我们最终选择了腾讯云作为备选直播服务商。
  1. 实现过程
  • 接入一家新的直播云服务商,业务流程图调整如下:

3.1 业务变化

  • 后台增加操作功能,可切换服务商和客户端使用的SDK。目前只有人工切换服务商,后续可以加入系统检测报警机制,并自动进行切换。但若完全靠系统自动切换,会有误报风险。

  • 直播是以节目为单位,在创建节目时增加一个字段标识使用哪个服务商。后续一切操作,例如:生成推流地址、拉流地址、截图、保存回放都调用这个服务商的接口。

  • 推流地址是服务器生成并签名后返回给客户端,客户端无需关心使用的服务商,只需关心使用哪个SDK。优先使用腾讯云SDK,由于无法保证其稳定性,所以前期同时接入七牛云和腾讯云的SDK,由后台配置各自使用比例。

  • 增加对腾讯云回调通知的处理

  • 包括推流状态回调、截图回调、生成录制文件回调。一个节目有一个流空间,七牛云和腾讯云的流空间是全局唯一的,所以不管是七牛云还是腾讯云的每个回调都能准确的找到对应的节目。

  • 生成回放的方式完全不同。七牛云是在直播结束时调用接口生成的,而腾讯云是在推流地址后加参数&record=mp4&record_interval=5400,然后接收回调。腾讯云还可以配置全局的推流自动保存。

  • 腾讯云区分生产环境和测试环境。腾讯云的回调通知是全局配置的,无法区分环境,使用多个账号又增加成本,于是把回调通知都配置成生产环境的,调用异步处理接口时把taskId存到数据库,生产环境找不到则转发到测试环境。 3.2 代码结构变化

  • 最初只接入一家服务商,代码结构比较简单。如今,为了避免有重复代码,过多使用if、else,所以使用了简单工厂模式。业务代码统一调用工厂类VideoTV3rdLiveServiceFactory,七牛云和腾讯云各写了一套业务代码,分别是VideoTVQcloudLiveService和VideoTVQiniuLiveService,实现生成推流地址、获取拉流地址、保存回放等与业务相关的逻辑代码。QcloudService是对腾讯云API和SDK的封装,PiliService和StorageService是对七牛云SDK的封装。

  1. 后续工作
  • 实现系统故障检测报警。系统定时尝试推流,如果失败累计达到n次后发送邮件、短信报警。
  • 有新的业务需求需要实现两套,分别对接七牛云和腾讯云。

转载于:https://juejin.im/post/5cad57dae51d456e6154b3da

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值