直播技术概述

直播流媒体协议中RTMP和HLS协议是我们比较熟悉的。RTMP(real-time message protocol)实时消息协议,上层基于TCP协议,因此具有稳定,可控等特性。在播放端时延上一般为3-5s。HLS(HTTP Live Stream)是Apple公司的动态码率自适应技术,支持点播和直播功能。以HTTP为基础,因此其穿透能力强、无论是点播还是直播,都是通过HTTP进行媒体流数据请求,但正是因为基于HTTP协议,我们知道,HTTP是用于文本请求的,所以无论是在点播还是在直播,都会对流进行切片,切成一个个适合的小分片,而这造成了在直播中,主播端播放的时候会有15s左右的延迟。这在直播体验上会有点差强人意。基于HLS的整体功能框架如下图2:

RTMP在直播中用的比较多,然而,在弱网环境下,上层基于TCP协议的缺点也暴露的比较明显。在弱网环境下,丢包的概率大大增加,基于TCP协议的丢包重传给带宽造成了更大的压力,加剧了网络拥塞。再者,直播的多样化需求、如连麦,如多人讨论等需求的提出,RTP(real-time transport protocol)协议族成了多样化直播的有利协议。若如果只是单纯使用RTP协议,还无法做到直播多样化的功能,RTP协议只是携带流媒体数据,而做到流媒体控制,当然还需要RTCP(real-time transport control protocol)协助。因此,现在多样化要求下的直播,大多基于WebRTC进行二次开发,或进行裁剪,或进行优化,或加入相关自定义插件。关于流媒体协议,会在流媒体协议系列中讲到。

WebRTC(Web Real-Time Communication)是一个基于网页浏览器进行实时语音对话或者视频对话的API。谷歌于2011年6月对WebRTC进行了开源。WebRTC提供了实时视频会议的核心技术。WebRTC架构如图3所示:WebRTC完成了从音视频采集到音视频播放的全过程。最重要的还完成了NAT穿越功能,为点对点音视频通信提供了基础。对于WebRTC这块,在WebRTC技术系列中会详细讲到。

WebRTC既然是点对点的,那么如果单纯的直播功能,能用WebRTC吗?答案是肯定的,从图3 WebRTC的框架图可以看到,WebRTC具备了音视频引擎,同时提供了网络传输方案,而直播无非就是音视频流数据传输,因此WebRTC是完全能做到的。搭建MCU(Multi-point Control Unit)或者SFU(Selective forward Unit)网络结构来解决一端客户端进行网络音视频传输到MCU或者SFU服务,继而由MCU或者SFU服务转发到用户端(直播中,用户一般称为粉丝端)。

实际上,目前好多公司即使是单纯的直播功能点也用到了WebRTC。可能有人会有疑问,单纯的直播为啥不直接使用RTMP。这其中主要有几个原因,一是WebRTC基于RTP协议,RTP上层基于UDP协议,这在弱网条件下,不会像RTMP一样,进行重复重传,加剧网络拥塞,而WebRTC通过各种技术来解决丢包问题。二是在后续直播功能扩展下更加方便快捷,如加入多人连麦功能等。当然,在扩展性上如连麦,rtmp也可以完成,但因为基于TCP需要进行三次握手,每次连接都产生了额外的RTT,存在高延迟的问题,因此rtmp方案是不太可取的。当然,一开始项目就使用了RTMP协议,并且也搭建了RTMP服务器,特别是整个大集团都在使用RTMP的时候,是不可能一刀切的从RTMP转到RTP的,因此就会有如下的RTP推流之后经过MCU再转RTMP的方案存在。

图 rtmp方案

图 rtp方案

一个完整的直播功能,一般包括主播端、粉丝端(播放端)、以及服务端。服务端涉及的功能很多,可能会分成不同功能的服务,但这里我们把这些功能统一为服务端。主播端,顾名思义,就是信息内容分享者,对话议题发起者,是音视频流发起的一端。粉丝端:既是观看主播信息的用户,是获取音视频流的一端。服务端:既充当接收流,保存流中间方,而且也是各种信号命令的控制者,如主播在直播过程中想发送优惠券,那么命令就通过服务器,继而发送给用户。三者的关系如下图4:这里主播推流的操作涉及的协议可以是RTMP(以RTMP为协议的流媒体传输)、HLS、或者RTP/RTCP等,也可以是先RTP,再转RTMP。根据业务情况进行,推流涉及的一些开源库可以是FFmpeg、WebRTC。

图 完整直播架构

前面说到,多样化直播功能需求下,主播侧基于RTP/RTCP协议进行流媒体传输。而粉丝侧是基于RTP或RTMP协议进行的流媒体传输。下图中是一个完整音视频拉流播放流程,根据开源库FFmpeg的执行流程来分析的,至于WebRTC的音视频播放则是直接通过RTP进行的,并没有像FFmpeg那样,根据不同的流媒体协议来进行。一般情况下,在多样化直播中,播放端一般都是在FFmpeg开源库进行开发。实际上,FFmpeg也具备推流能力,只不过因为WebRTC天然的视频通话能力,在多样化直播需求中显然更具备优势。因此,一般情况下,推流直接基于WebRTC、拉流基于FFmpeg。FFmpeg的拉流流程如下图所示,如根据RTMP协议进行流传输,确定流文件为何种格式,由特定的格式进行相关的处理、进行音频视频解码、渲染播放。关于FFmpeg这块,将在FFmpeg进行详细分析。

多样化直播涉及的内容链路主要包括流媒体协议, 协议选择,根据媒体信息选择封装格式、根据音频和视频数据,分解出编解码格式、得出编解码数据之后,推流的进行发送,拉流进行渲染播放。关于音频处理中,发送端,涉及采集----> 3A处理 ——>发送 , 接送方,接收丢包恢复 ——> NetEQ缓存解码——> 混音播放,这其中,涉及各种算法,包括卡尔曼滤波算法、3A、NetEQ等。 关于视频处理,发送端,涉及摄像头采集——> 编码(v8,h264)——>发送,接收方,接收丢包恢复——> jitterbuffer——>解码——>屏幕显示。在音视频的传输过程中,涉及到FEC、延迟丢包重传等算法。 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容