每每到618、雙11這樣的大型活動(dòng)的時(shí)候,每天都有幾個(gè)重要的大v或者品牌直播需要保障。
以往的重點(diǎn)場(chǎng)次監(jiān)播方式是這么造的:
對(duì)每路直播的源流、各檔轉(zhuǎn)碼流分別起一個(gè)ffplay播放窗口,再手動(dòng)調(diào)整尺寸在顯示器桌面進(jìn)行布局,排到一屏里來監(jiān)播。
這樣做的缺點(diǎn):
-
操作復(fù)雜,手動(dòng)調(diào)整畫面不美觀
-
不同的拉流時(shí)間點(diǎn),起播時(shí)間有誤差,畫面無法協(xié)調(diào)一致
-
當(dāng)拉多路流的時(shí)候,帶寬也受限制,基本上拉3-4個(gè)2m碼率以上的流本機(jī)就會(huì)卡頓了,此時(shí)如果流有問題,就不能準(zhǔn)確判斷卡頓來源了,檢查起來也比較費(fèi)勁
展示方式是這樣的:
ffplay 'rtmp://stream1' & ffplay 'rtmp://stream2' & ffplay 'rtmp://stream3' & ffplay 'rtmp:/stream4' & ffplay 'rtmp://stream5' & ffplay 'rtmp://stream6' & ffplay 'rtmp://stream7' & ffplay 'rtmp://stream8'
PS:這么多的窗口,點(diǎn)著是挺麻煩的??
在我們混流生產(chǎn)層能力完備后,就開始琢磨怎么將它賦能在平常或者大促的直播間重保上,同時(shí)也為了更加專業(yè)、更高效的進(jìn)行監(jiān)播,經(jīng)過了一段時(shí)間的打磨,提煉了一個(gè)簡單的混流編排功能。
它的工作模式是這樣的:
在這里你可以創(chuàng)建混流任務(wù),并支持你在不斷流的狀態(tài)下做到更新任務(wù)輸入信息。
將要監(jiān)播的直播流地址,需要展示的文字內(nèi)容、布局方式、混流輸出的模板配置進(jìn)行下發(fā),就可以拉到自動(dòng)編排好的直播流地址。
它現(xiàn)在長這個(gè)樣子:
最終呈現(xiàn)出來的混流的效果是這樣的??:
也可以是這樣的:
也可以呈現(xiàn)其他的布局方式,目前還沒做的那么豐富,不過底層能力和api接口是都支持的,完全靈活布局。
在混流任務(wù)運(yùn)行過程中,可以自由修改混流輸入源的配置。
這種新型的監(jiān)播方式,可以直觀的區(qū)分源流、各檔轉(zhuǎn)碼流的播放效果:畫面內(nèi)容是否正常,有無花屏、是否卡頓?
當(dāng)出現(xiàn)問題時(shí)能夠指導(dǎo)我們快速做出決策:
-
轉(zhuǎn)碼流有問題,源沒有問題,快速排查任務(wù)日志,定位是什么原因?qū)е?/p>
-
轉(zhuǎn)碼流有問題,源也有問題,迅速問題源流的流詳細(xì)信息,定位問題并通知業(yè)務(wù)方進(jìn)行操作
-
主流都有問題,備流沒問題,通知業(yè)務(wù)方迅速切備流
還有其他的一些有點(diǎn):
-
操作簡單方便,還可以記憶配置,下次直接修改
-
每個(gè)播放端只需拉一路流,節(jié)省本地帶寬
-
最多可以支持16路混流,一屏監(jiān)播16路流的畫面
-
不斷流,輕松切換各種布局
-
不斷流,隨便操作流的添加、刪除、修改
-
方便分享給其他人進(jìn)行播放
混流布局功能的底層實(shí)現(xiàn)框架:
- 定義通用的layout布局結(jié)構(gòu)-BasicClip
{
ClipType string `json:"clipType"`
LeftMargin int `json:"leftMargin"`
PosX *int `json:"posX"`
PosY *int `json:"posY"`
Width int `json:"width"`
Height int `json:"height"`
}
在此基礎(chǔ)上擴(kuò)展出更豐富的BorderClip, TextClip, ImageClip等類型,來滿足不同的布局元素設(shè)計(jì)。
- 定義通用的videoMask結(jié)構(gòu),它可以包含多個(gè)clip interface, 即各種clip元素,在videoMask中各個(gè)clip是同一個(gè)layer的,只允許在限定的尺寸中進(jìn)行布局。
type VideoMask struct {
Layer int `json:"layer"`
Clips []interface{} `json:"clips"`
}
- 每個(gè)輸入的視頻流,可以包含多個(gè)videoMask,多個(gè)videoMask在最終overlay的時(shí)候,按定義的layer先后順序進(jìn)行鋪疊,以達(dá)到最終的預(yù)期視頻布局效果。
應(yīng)用場(chǎng)景拓展
- 什么情況下使用混流?
?當(dāng)設(shè)備不支持同時(shí)拉多路流時(shí)使用混流,比如sip入會(huì)的場(chǎng)景。
?需要多個(gè)視頻畫面、多個(gè)音頻流合成一個(gè)直播流時(shí)使用混流,比如會(huì)議錄制(rtc協(xié)議)場(chǎng)景、教育類場(chǎng)景(直播老師和學(xué)生的畫面)、直播連麥的場(chǎng)景等。
總結(jié):此次能在618重保期間發(fā)揮它的價(jià)值,也算是有所得。希望以后可以在日常直播、展會(huì)等其他重要直播活動(dòng)中發(fā)揮作用。關(guān)于混流的產(chǎn)品介紹以及更多的使用場(chǎng)景也會(huì)在后續(xù)的文章中一一展開,敬請(qǐng)期待。
作者:京東科技 孟曉偉文章來源:http://www.zghlxwxcb.cn/news/detail-475729.html
來源:京東云開發(fā)者社區(qū)文章來源地址http://www.zghlxwxcb.cn/news/detail-475729.html
到了這里,關(guān)于技術(shù)賦能-混流編排功能,助力京東618直播重保 | 京東云技術(shù)團(tuán)隊(duì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!