• <strike id="fdgpu"><input id="fdgpu"></input></strike>
    <label id="fdgpu"></label>
    <s id="fdgpu"><code id="fdgpu"></code></s>

  • <label id="fdgpu"></label>
  • <span id="fdgpu"><u id="fdgpu"></u></span>

    <s id="fdgpu"><sub id="fdgpu"></sub></s>
    您當(dāng)前的位置是:  首頁(yè) > 資訊 > 國(guó)內(nèi) >
     首頁(yè) > 資訊 > 國(guó)內(nèi) >

    XSWITCH大規(guī)模視頻會(huì)議解決方案

    2019-11-05 14:43:50   作者:   來(lái)源:   評(píng)論:0  點(diǎn)擊:


      我們?cè)陂_發(fā)FreeSWITCH視頻會(huì)議系統(tǒng)的過(guò)程中,經(jīng)常遇到智慧黨建相關(guān)的視頻會(huì)議需求。考慮到會(huì)議規(guī)模比較大,F(xiàn)reeSWITCH的轉(zhuǎn)碼性能又不好,就一直沒(méi)敢接。后來(lái)有老朋友找到我們,不好拒絕,就做了一套解決方案,兩年多過(guò)去了,運(yùn)行良好,也走了一些彎路,在此跟大家分享一下。
      會(huì)議的使用場(chǎng)景大致是從上到下開大會(huì),區(qū)縣級(jí)組織部為主會(huì)場(chǎng),開到鄉(xiāng)鎮(zhèn)及行政村。主會(huì)場(chǎng)的視頻發(fā)送到下級(jí),同時(shí)主會(huì)場(chǎng)可以隨時(shí)查看各分會(huì)場(chǎng)視頻,了解大家參會(huì)及學(xué)習(xí)情況。除了集體講課外,還有互動(dòng)討論等,可以選擇不同的會(huì)場(chǎng)發(fā)言。
      我們?nèi)渴褂肧IP解決方案。在硬件選擇上,主會(huì)場(chǎng)我們使用了GrandStream GXV3202設(shè)備,支持SIP視頻會(huì)議及雙流。村鎮(zhèn)級(jí)會(huì)場(chǎng)酌情使用GXV3202或質(zhì)優(yōu)價(jià)廉的機(jī)頂盒。
      我們使用FreeSWITCH做為視頻會(huì)議的平臺(tái)。但是,F(xiàn)reeSWITCH單機(jī)無(wú)法支撐大規(guī)模的轉(zhuǎn)碼會(huì)議,項(xiàng)目又比較緊急。所以,我們最初采用了最簡(jiǎn)單的視頻會(huì)議方式,即不轉(zhuǎn)碼,不融屏,僅做視頻轉(zhuǎn)發(fā)的方式。這種方式有很多限制,比如所有參會(huì)方只能看到相同的內(nèi)容,我們也沒(méi)法打字幕。我們實(shí)現(xiàn)了一個(gè)Web界面,可以自動(dòng)輪循切換所有會(huì)場(chǎng),算是在一定程度上解決了第一個(gè)問(wèn)題,字幕的解決方案就是在會(huì)場(chǎng)現(xiàn)場(chǎng)后面掛橫幅或者放桌牌。
      畢竟是能開會(huì)了,我們也在單機(jī)上做到了大約400路并發(fā)的規(guī)模,開了三次會(huì),都比較成功。
      在開會(huì)的過(guò)程中,我們抓緊開發(fā)能轉(zhuǎn)碼融屏的會(huì)議。首先要解決的問(wèn)題就是多機(jī)會(huì)議串聯(lián)。我們采用了一主多從的結(jié)構(gòu)。即主會(huì)場(chǎng)全部撥入主服務(wù)器,而下級(jí)分會(huì)場(chǎng)撥入從服務(wù)器。主服務(wù)器和從服務(wù)器的會(huì)議室串聯(lián)。為了避免出現(xiàn)「看對(duì)眼」(即一路視頻信號(hào)上行又下行看到的畫面會(huì)無(wú)限循環(huán))的情況,也是為了解決不同會(huì)場(chǎng)看不同畫面,我們采用兩個(gè)畫布實(shí)現(xiàn)——上行視頻永遠(yuǎn)在畫布2上,下行視頻永遠(yuǎn)在畫布1上。
      實(shí)驗(yàn)成功,最后我們用了5臺(tái)服務(wù)器搭建了一個(gè)集群,可以轉(zhuǎn)碼融屏,也可以打字幕了。但,這只是我們惡夢(mèng)的開始。
      首先我們發(fā)現(xiàn)機(jī)頂盒頂不住了,經(jīng)常會(huì)出現(xiàn)花屏、卡頓,甚至死機(jī)。機(jī)頂盒版本比較老,上面有一個(gè)SIP終端軟件,是第三方開發(fā)的,對(duì)于我們來(lái)講就相當(dāng)于一個(gè)黑盒子,除了不斷地測(cè)試修改各種視頻參數(shù),我們確實(shí)也沒(méi)有更好的辦法進(jìn)行調(diào)試。不過(guò),在經(jīng)過(guò)無(wú)數(shù)次的實(shí)驗(yàn)后,我們還是找到了一些可行的參數(shù),做到了720p高清視頻,質(zhì)量不是最優(yōu),但是也算是足夠好了。
      主會(huì)場(chǎng)實(shí)拍

    多畫面
      大規(guī)模系統(tǒng)的另一個(gè)難點(diǎn)就是測(cè)試,雖然我們也部署了自動(dòng)化的測(cè)試,但測(cè)起來(lái)跟真實(shí)的場(chǎng)景數(shù)據(jù)有諸多出入,后來(lái)還是部署了人肉方式,放了一大批機(jī)頂盒實(shí)際入會(huì)測(cè)試。
      機(jī)頂盒測(cè)試
      項(xiàng)目是跟山東有線合作的,他們有很好的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,人員配合也很到位。但無(wú)論如何并發(fā)就是上不去。又經(jīng)過(guò)無(wú)數(shù)有猜測(cè)與調(diào)試,請(qǐng)教了業(yè)界高人的情況下把問(wèn)題基本定位到Linux內(nèi)核的瓶頸。這……好像有點(diǎn)超綱了。一次偶然的機(jī)會(huì)換了臺(tái)機(jī)器測(cè)試,發(fā)現(xiàn)網(wǎng)絡(luò)瓶頸竟然不存在了,原因只是那臺(tái)機(jī)器的網(wǎng)卡不一樣。后來(lái),我們把所有服務(wù)器都換成了那個(gè)型號(hào)的網(wǎng)卡。
      在實(shí)現(xiàn)過(guò)程中,我們也給FreeSWITCH打了一些補(bǔ)丁,主要是完成級(jí)聯(lián)的控制,以及修復(fù)一些Bug,做了一些優(yōu)化。比如與會(huì)者比較多,在大部分會(huì)場(chǎng)不上鏡(沒(méi)有人看該會(huì)場(chǎng)的畫面)的情況下,我們就停止對(duì)該會(huì)場(chǎng)的視頻進(jìn)行解碼,以節(jié)省CPU。
      當(dāng)然,在打補(bǔ)丁的過(guò)程中我們也成功地植入了自己的Bug。在第一次上線的時(shí)候,測(cè)試了一整天,到了晚上臨近開會(huì)的時(shí)候,發(fā)現(xiàn)內(nèi)存在默默地增長(zhǎng),如此下去,根本撐不過(guò)晚上的會(huì)議,一身汗。好在我們提前部署了sofia recover,直接強(qiáng)制所有FreeSWITCH崩潰,重啟后僅有少數(shù)會(huì)場(chǎng)掉線,避免了最大的災(zāi)難,順利撐過(guò)了兩個(gè)多小時(shí)的會(huì)議。
      會(huì)后我們連夜把內(nèi)存泄漏給修復(fù)了,至此,視頻會(huì)議系統(tǒng)算是可以交差了。又經(jīng)過(guò)幾輪優(yōu)化,現(xiàn)在,我們的平臺(tái)已經(jīng)有了正式的名稱,叫XSWITCH。
      后來(lái)我們也實(shí)現(xiàn)了很多熱修復(fù)的手段,比如將所有在線的用戶都轉(zhuǎn)到echo Application,修復(fù)后reload mod_conference,再轉(zhuǎn)回來(lái)。因?yàn)楫吘箙f(xié)調(diào)幾百個(gè)機(jī)頂盒重新呼叫一遍也是很難的。
      下圖是多級(jí)級(jí)連示意圖。主會(huì)場(chǎng)采集的視頻圖像放到主服務(wù)器的畫布1上,下發(fā)到從服務(wù)器進(jìn)而下發(fā)到終端。各終端圖像首先匯聚到從服務(wù)器畫布2上,上行到主服務(wù)器畫布2,主會(huì)場(chǎng)隨時(shí)可以選擇觀看畫布1或畫布2。
      多級(jí)級(jí)連示意圖
      使用這種方案,在終端數(shù)量增多時(shí)我們可以線性橫向擴(kuò)展。
      會(huì)議系統(tǒng)運(yùn)行以來(lái),狀態(tài)良好。最近,我們完成了為期三天的視頻會(huì)議保障,涉及到600多個(gè)終端(鄉(xiāng)鎮(zhèn)及行政村),萬(wàn)名黨員,順便采集到一些技術(shù)數(shù)據(jù)。
      下圖是某服務(wù)器200多個(gè)終端的帶寬情況。
      某服務(wù)器200+終端
      下圖是綜合視圖。
      會(huì)控界面顯示該會(huì)議中共有434個(gè)終端入會(huì)。
      會(huì)控界面
      會(huì)控界面顯示各服務(wù)器的統(tǒng)計(jì)情況。顯示該會(huì)議中共有504個(gè)終端入會(huì)。
      CPU內(nèi)存的監(jiān)控情況。
      以上只是部分統(tǒng)計(jì)數(shù)據(jù)。當(dāng)時(shí)服務(wù)器上還有其它并行的會(huì)議在開。總得來(lái)看,由于我們做了轉(zhuǎn)碼優(yōu)化,CPU反而沒(méi)有什么瓶頸了,而瓶頸在于網(wǎng)卡。我們暫時(shí)使用上行2M下行1M的碼率,理論上千兆的網(wǎng)卡可以支撐500路,或打8折400路的并發(fā)。我們暫時(shí)最大只跑了200多路,潛力有待進(jìn)一步驗(yàn)證。
      下一步的優(yōu)化方案也很清晰:
      增加一塊網(wǎng)卡可以提高一倍并發(fā)
      使用動(dòng)態(tài)碼率控制,在參會(huì)方不上鏡的時(shí)候降低碼率或停發(fā)視頻,但需要客戶端配合
      感謝各位領(lǐng)導(dǎo)的信任與支持,也感謝所有黨員同志們的大力支持。我們一定不會(huì)放過(guò)持續(xù)優(yōu)化的機(jī)會(huì),爭(zhēng)取發(fā)揮出硬件最大的性能,這是我們程序員的追求,也是我們的責(zé)任。
      cpuinfo,懂的看 ;)
      processor: 63
      vendor_id: GenuineIntel
      cpu family: 6
      model: 79
      model name: Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz
      stepping: 1
      microcode: 0xb000021
      cpu MHz: 1200.219
      cache size: 40960 KB
      physical id: 1
      siblings: 32
      core id: 15
      cpu cores: 16
      apicid: 63
      initial apicid: 63
      fpu: yes
      fpu_exception: yes
      cpuid level: 20
      wp: yes
      flags: fpu vme de …
      bugs:
      bogomips: 4201.09
      clflush size: 64
      cache_alignment: 64
      address sizes: 46 bits physical, 48 bits virtual
      power management:
      關(guān)于FreeSWITCH視頻會(huì)議相關(guān)的技術(shù),很久以前在易靈微課上講過(guò)一次課:《是的,我們?cè)谧鲆曨l會(huì)議》,歡迎閱讀。
      煙臺(tái)小櫻桃科技是FreeSWITCH開源項(xiàng)目的核心貢獻(xiàn)者,文中提到了很多補(bǔ)丁都已提交到FreeSWITCH的源代碼倉(cāng)庫(kù)。
      煙臺(tái)小櫻桃科技招聘FreeSWITCH相關(guān)開發(fā)及運(yùn)維實(shí)施人員,如果有興趣加入我們,歡迎發(fā)郵件到 jobs@x-y-t.cn。
      煙臺(tái)小櫻桃科技提供專業(yè)的FreeSWITCH技術(shù)支持及呼叫中心解決方案。歡迎參觀,郵件info@x-y-t.cn。
      另外,我們將于11月22日在北京搞事情,歡迎參加:第八屆FreeSWITCH-CN開發(fā)者沙龍
      如果您對(duì)具體的技術(shù)感興趣,也歡迎參加我們的FreeSWITCH培訓(xùn):FreeSWITCH高級(jí)培訓(xùn)冬季班-北京站
    【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無(wú)關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

    專題

    CTI論壇會(huì)員企業(yè)

    亚洲精品网站在线观看不卡无广告,国产a不卡片精品免费观看,欧美亚洲一区二区三区在线,国产一区二区三区日韩 房产| 浦东新区| 广丰县| 鄯善县| 翁源县| 玉林市| 鱼台县| 河南省| 兴化市| 岐山县| 苍山县| 大关县| 金湖县| 新津县| 呼伦贝尔市| 定兴县| 安庆市| 比如县| 阿城市| 通化市| 衡阳市| 贵定县| 玉门市| 玛曲县| 横山县| 合阳县| 邹城市| 嵊州市| 新沂市| 读书| 措勤县| 肥西县| 福贡县| 松潘县| 文登市| 庆城县| 盐津县| 汾西县| 社会| 佛冈县| 和林格尔县| http://444 http://444 http://444 http://444 http://444 http://444