聽程序員GG講直播那些事

0 評(píng)論 5970 瀏覽 28 收藏 6 分鐘
🔗 产品经理的核心价值是能够准确发现和满足用户需求,把用户需求转化为产品功能,并协调资源推动落地,创造商业价值

2016年,直播大火。涌現(xiàn)出了一個(gè)個(gè)直播產(chǎn)品,映客、花椒、斗魚……嗅到了風(fēng)口的氣息,一些視頻網(wǎng)站在線教育平臺(tái)也開始引入直播。作為一名敬業(yè)的產(chǎn)品汪,雖然不負(fù)責(zé)直播業(yè)務(wù),但也對(duì)直播頗有興趣,幸得wuli程序員男票也從事直播相關(guān)的工作,便有幸一探直播的真相。

1、直播流示意圖

直播流示意圖

  • 直播間:視頻采集端,包含一些直播設(shè)備。以在線教育直播為例,直播間是老師錄制課程的地方。
  • 源站:接受直播間傳送的視頻流,并進(jìn)行存儲(chǔ)和轉(zhuǎn)發(fā),由多臺(tái)服務(wù)器組成。源站相對(duì)于CDN來講,是源頭,故而稱之為源站。
  • CDN:主動(dòng)向源站獲取視頻流,并進(jìn)行存儲(chǔ)和轉(zhuǎn)發(fā)。CDN在這個(gè)直播的整個(gè)環(huán)節(jié)中扮演的角色類似于計(jì)算機(jī)存儲(chǔ)系統(tǒng)中的緩存。
  • 用戶:接收CDN傳送的視頻流,觀看直播。

2、直播間-源站的關(guān)系

(1)直播間主動(dòng)向源站傳輸視頻流,這個(gè)動(dòng)作叫推流。

那么問題來了——直播間是如何確定把視頻流推送到哪臺(tái)服務(wù)器上?

直播間可以配置服務(wù)器對(duì)應(yīng)的ip地址。比如:直播間1配置了服務(wù)器A和服務(wù)器B的IP地址,那么當(dāng)直播間1產(chǎn)生視頻流的時(shí)候,會(huì)把視頻流同時(shí)傳輸?shù)椒?wù)器A和服務(wù)器B上。

(2)直播間與源站之間常用的傳輸協(xié)議:rtmp協(xié)議,hls協(xié)議。

傳輸協(xié)議是什么鬼?舉個(gè)不恰當(dāng)?shù)睦?,傳輸協(xié)議相當(dāng)于是翻譯媒介。一個(gè)日本人,和一個(gè)俄國(guó)人,如果日本人講日語,俄國(guó)人講俄語,那么他們是無法溝通的。但如果他們有一門共通的語言,比如英語,在遵從英語的語言規(guī)范的前提下,他們是能夠進(jìn)行溝通的。傳輸協(xié)議就是直播間與源站之間的共通語言。

RTMP是Adobe公司的流媒體傳輸協(xié)議,普通網(wǎng)絡(luò)用戶均可使用,包括非IOS平臺(tái)用戶。

HLS是IOS平臺(tái)下的流媒體傳輸協(xié)議。

3、用戶與CDN

用戶在終端進(jìn)行觀看直播的操作,相當(dāng)于向CDN發(fā)送獲取視頻流的請(qǐng)求。

那么問題來了,用戶終端發(fā)起獲取視頻流請(qǐng)求的時(shí)候,是如何確定向哪個(gè)CDN獲???

在用戶發(fā)起獲取視頻流請(qǐng)求的時(shí)候,出于傳輸效率的考慮,用戶與CDN之間有一套路由算法(這個(gè)算法一般是由CDN設(shè)定的)。比如這樣一個(gè)場(chǎng)景,XX公司/XX產(chǎn)品的直播間在北京,用戶在西安。當(dāng)這個(gè)西安用戶發(fā)起獲取直播流的請(qǐng)求時(shí),XX公司/XX產(chǎn)品在西安、上海、南京、廣州、太遠(yuǎn)都有CDN,那么路由算法會(huì)告訴用戶終端,該獲取哪個(gè)CDN,比如獲取西安CDN能夠獲得較高的傳輸速率,那么該用戶的終端就會(huì)向西安CDN獲取視頻流。

4、CDN與源站

當(dāng)用戶向CDN發(fā)送獲取視頻流的請(qǐng)求之后,CDN會(huì)向?qū)?yīng)的源站服務(wù)器獲取視頻流,這個(gè)動(dòng)作叫做“回流”。

那么問題又來了,CDN如何知道向哪個(gè)服務(wù)器獲取視頻流?

用戶終端向CDN請(qǐng)求獲取視頻流的時(shí)候,在傳送請(qǐng)求的時(shí)候,會(huì)告訴CDN向哪臺(tái)源站服務(wù)器獲取視頻流,會(huì)在傳送的數(shù)據(jù)中含有所獲取源站服務(wù)器的IP信息。我們通常所說的切換線路,指的就是用戶在向CDN發(fā)送獲取視頻的請(qǐng)求時(shí),更換了獲取源站服務(wù)器的IP信息。

5、補(bǔ)充——為什么需要CDN?

解決帶寬問題。用戶對(duì)直播的播放流暢度、互動(dòng)實(shí)時(shí)性有較高的要求。對(duì)于這樣的性能要求,需要通過提高帶寬來解決。如果直播服務(wù)提供者的帶寬非常高,那么源站服務(wù)器的數(shù)據(jù)傳送效率就大大提高,流暢度和實(shí)時(shí)性是完全能夠滿足的。但考慮到成本的問題,服務(wù)提供者一般會(huì)選擇使用CDN,將源站服務(wù)器的數(shù)據(jù)傳送到CDN,通過CDN進(jìn)行存儲(chǔ)轉(zhuǎn)發(fā)。我們可以想象,如果用戶直接向源站服務(wù)器請(qǐng)求獲取視頻流,會(huì)導(dǎo)致源站服務(wù)器壓力過大,畢竟在大多場(chǎng)景下,直播的觀看人數(shù)是比較多的,而通過CDN的存儲(chǔ)轉(zhuǎn)發(fā)可以降低源站服務(wù)器的壓力。

 

本文系人人都是產(chǎn)品經(jīng)理團(tuán)隊(duì)@張婷?原創(chuàng)發(fā)布,未經(jīng)許可,不得轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 目前還沒評(píng)論,等你發(fā)揮!
专题
12604人已学习13篇文章
随着互联网在大众生活中的不断普及与深入发展,互联网医疗这一全新的医疗健康服务业态发展趋势向好。本专题的文章分享了互联网医疗行业分析和竞品分析报告。
专题
14054人已学习12篇文章
“产品架构能力”是B2B产品经理中泛指设计产品系统架构的能力,这是产品经理非常重要的一个能力。本专题的文章分享了产品架构的设计指南。
专题
15290人已学习10篇文章
再好的产品,没有优质的推广渠道加持和App投放增长的方法,也很难实现有效传播和增长。本专题的文章分享了App投放推广指南。
专题
12725人已学习17篇文章
在一些老系统可能会有流程复杂、扩展性不强的问题,此时便需要进行重构。本专题的文章分享了产品重构指南。
专题
13316人已学习13篇文章
情绪板由能代表用户情绪的文本、元素、图片拼贴而成,能够很好地帮助我们定义设计的方向。本专题的文章分享了如何应用情绪板。
专题
15283人已学习16篇文章
随着互联网时代的蓬勃发展,互联网平台活动运营对于互联网企业业务十分重要。本专题的文章分享了如何做活动运营。