首頁> 其他類型> 目錄頁> 第249章 群聊視頻定江山

第249章 群聊視頻定江山

2026-06-07 11:47:09 作者: 天頂穹廬

  飛信的視頻通話功能打了微信一個措手不及,可趙明知道,微信那幫人不會認輸。

  他們在加班,在疊代,在優化。

  也許下個月,也許下周,也許明天,微信就會推出一個更穩定、更清晰、更流暢的視頻通話版本。

  長青不能停,飛信更不能停。

  趙明把「群聊視頻」四個字寫在白板的正中央,畫了一個大大的紅圈。

  「下一仗,打群聊視頻。」

  他轉過身,看著在座的十幾個核心工程師。

  「一家人分散在五湖四海,能不能在一個房間裡聊天?」

  「爺爺奶奶在老家,爸媽在深圳,孩子在大學,能不能同時出現在一個屏幕上?」

  「一個團隊異地辦公,能不能像坐在同一間會議室里開會?」

  「你講PPT,我放文檔,他畫白板,所有人實時同步?」

  「這個功能,微信沒有,飛信要有。」

  「而且要比他們先有。」

  會議室里安靜了片刻,然後有人開始鼓掌。

  群聊視頻的技術難度比點對點視頻通話高了不止一個數量級。

  點對點是一對一的通路,群聊是多對多的網狀結構。

  四個人同時在線,就需要建立六條獨立的視頻通路。

  每增加一個人,通路的數量呈指數級增長。

  到了十個人,就是四十五條通路,對伺服器的壓力、對網絡帶寬的要求、對客戶端處理能力的要求,都遠遠超出了現有系統的承載極限。

  趙明在技術方案評審會上把這個問題拋了出來。

  「我們不能簡單地把點對點的方案複製到群聊場景。」

  「四條通路,每一條都獨立傳輸視頻流,帶寬消耗太大了。」

  「用戶家的寬帶撐不住,手機的網絡更撐不住。」

  負責架構設計的工程師老周站起來,走到白板前面,拿起馬克筆畫了一個示意圖。

  「趙總,我的方案是不做通路倍增,做視頻混流。」

  「伺服器把所有人的視頻畫面合成一路流,再分發給每個參與者。」

  「四個人通話,伺服器收到四路視頻流,在伺服器端合成為一路畫面,分成四個窗口,然後只發一路流給每個人。」

  「這樣,每個用戶只上傳一路自己的視頻,只下載一路合成好的視頻。」

  

  「無論多少人通話,用戶端的帶寬消耗都是恆定的。」

  「瓶頸在伺服器端,不在用戶端。」

  趙明盯著白板上的示意圖,腦子裡飛快地轉了幾圈。

  「混流的延遲有多大?」

  「合成一路畫面需要時間,編碼需要時間,分發需要時間。」

  「延遲加起來,會不會比點對點高很多?」

  老周說:「會高,可高得不多。」

  「混流和編碼可以在GPU上做加速,幾十毫秒就能完成。」

  「加上網絡傳輸的延遲,總延遲應該能控制在二百毫秒以內。」

  「人類對延遲的感知閾值是四百毫秒,二百毫秒用戶感覺不出來。」

  趙明在方案上簽了字,批了四個字——「先做再說。」

  群聊視頻項目組進入了封閉開發模式。

  會議室的白板上貼滿了技術要點:混流伺服器、GPU加速、音頻混音、動態布局、丟包補償、帶寬預測。

  每完成一個模塊,就劃掉一行。

  白板上的任務越來越多,劃掉的也越來越多。

  最難的關卡是音頻混音。

  點對點的音頻處理相對簡單,一方說話,另一方接收。

  可在群聊場景下,多個人同時說話,伺服器要把所有人的聲音混合在一起,再發給每一個人。

  不是簡單的疊加,是智能的混音。

  有人說話聲音大,有人說話聲音小,有人在敲鍵盤,有人在咳嗽。

  伺服器要能識別出哪些聲音是人聲,哪些是噪音,哪些人正在說話,哪些人只是開著麥不吭聲。


  混音算法要保證對話自然流暢,不能搶話,不能斷句,不能有回聲,不能有雜音。

  負責音頻模塊的工程師叫小陳,是音頻實驗室的老兵,在杜比實驗室幹過好幾年,對數位訊號處理和聲學有很深的理解。

  小陳的方案是基於能量檢測的動態混音。

  伺服器實時分析每一路音頻的能量值,能量高於閾值的人判定為正在說話,最多選三路能量最高的音頻進行混音。

  其他人的音頻被暫時靜音,可不會被丟棄。

  能量值變化了,混音的組合也會動態調整。

  這個方案在邏輯上說得通,可真做起來,問題一大堆。

  閾值設得太高,說話聲音小的人被漏掉了,對方聽不到他的聲音。

  閾值設得太低,背景噪音被混進去了,對方聽到的全是沙沙聲。

  小陳在實驗室里調了一個多星期,用了幾百段不同場景的錄音做測試,才找到一組相對合理的參數。

  安靜環境下閾值低一些,嘈雜環境下閾值高一些。

  白天辦公室模式,深夜家庭模式,街邊嘈雜模式。

  每一種模式都要單獨標定參數,用戶第一次使用群聊視頻的時候,系統會自動跑一段幾秒鐘的環境音檢測,根據檢測結果自動選擇合適的參數組合。

  趙明看到這套方案的時候,問了一句:「用戶會不會覺得初始化太慢?」

  小陳說:「不會。幾秒鐘而已,用戶能等。」

  「等這幾秒鐘換來的音頻體驗,比任何等待都值。」

  趙明想了想,點了點頭。

  視頻混流的挑戰比音頻更大。

  四路視頻要合成一路,每路視頻的解析度、碼率、幀率可能都不一樣。

  有人用的是最新款的珠峰手機,攝像頭清晰,網絡好。

  有人用的是幾年前的舊機型,攝像頭模糊,網絡差。

  混流伺服器要能處理這些差異,合成出來的畫面不能忽大忽小、忽快忽慢、忽清忽糊。

  負責視頻模塊的工程師是老王的徒弟小劉,跟著老王做了好幾年的編解碼和視頻處理,技術上已經很老練了。

  小劉的方案是伺服器端統一轉碼。

  所有參與者的視頻流上傳到伺服器後,不直接混流,先轉碼成統一的格式和解析度。

  解析度統一到標清級別,碼率統一到一個合理的數值,幀率統一到一個標準值。

  轉碼完成後,再進行畫面合成,最後分發給所有參與者。

  趙明在方案評審會上提出了一個很現實的問題。



  「混流本身已經夠重了,再加上轉碼,伺服器撐不撐得住?」

  小劉說:「撐得住。」

  「數據中心的伺服器配備了圖形處理器加速卡,轉碼和混流都可以在圖形處理器上跑。」

  「CPU負責邏輯控制,GPU負責數據處理,分工協作,效率很高。」

  「一台伺服器可以支撐幾十路視頻的實時轉碼和混流。」

  趙明又問了一句:「幾十路夠不夠?萬一有幾百人同時在線的群聊呢?」

  小劉想了想,說了一句讓趙明放心的話:「幾百人同時在線的群聊,場景很少。」

  「大部分用戶用群聊視頻,也就是三五個家人朋友,十幾人的同事團隊。」

  「幾百人的場景,就算有,那也是大型活動,不能用群聊視頻,要用直播。」

  「技術上不是做不到,是成本和收益不成比例。」

  「為了一年用不了幾次的場景,投入幾倍的資源,不划算。」

  趙明認可了這個判斷,在方案上簽了字。

  老周、老周、老王、小陳、小劉,每個人都在各自的模塊上拼了命地往前趕。

  音頻混音的參數調了一遍又一遍,視頻轉碼的性能優化了一輪又一輪,混流伺服器的壓力測試跑了一版又一版。

  趙明每天晚上都要在實驗室里待到很晚。

  他不寫代碼,不調參數,就是坐在那裡看。


  看工程師們的狀態,看軟體的運行日誌,看伺服器的性能曲線,有問題就當場解決。

  群聊視頻功能進入了內部測試階段。

  陸念慈再次被推到了第一線。

  老陳把群聊視頻的用戶體驗測試任務交給了她,讓她組織一場大規模的內部試用活動,收集用戶的反饋和建議。

  陸念慈在長青集團內部招募了五百個試用用戶,來自不同的部門和崗位。

  有研發工程師,有產品經理,有市場人員,有客服,有銷售。

  她按照用戶的使用場景和需求分成了幾十個小組,每個小組有不同的測試任務。

  家庭組,測試家人之間的遠程溝通。

  同事組,測試異地辦公的協作效率。

  朋友組,測試多人聊天的流暢度和趣味性。

  測試持續了整整兩周。

  陸念慈每天收集反饋,整理問題,跟蹤進度。

  有人在群聊視頻里聽不清對方說話,有人在切換前後攝像頭的時候畫面卡頓,有人連接了好幾次都進不去房間。

  每一條反饋,她都仔仔細細地記錄下來,標上優先級,分給對應的工程師去解決。

  高優先級的當天必須修復,中優先級的二十四小時內修復,低優先級的排入下一個疊代版本。

  兩周的測試下來,陸念慈整理了一份幾十頁的測試報告。

  報告裡不僅有問題和建議,還有用戶的原話。

  一個家在四川的員工在反饋里寫了一句讓陸念慈鼻子發酸的話:「用群聊視頻跟老家的爸媽和妹妹一起吃飯,雖然隔著幾千里,可看著他們的臉、聽著他們的聲音,覺得一家人又坐在了一起,謝謝飛信。」

  陸念慈把這段話截圖發給了趙明。

  趙明看了之後,在項目周會上念了一遍,念完之後辦公室里安靜了很久,沒有人說話。

  趙明說了一句:「就為這段話,再熬幾個通宵也值。」

  群聊視頻功能正式上線的日子定在二〇〇八年春節前一周。

  趙明選這個時間點,理由很簡單。

  春節是中國人最重視的節日,也是家人團聚的日子。

  那些在外地打工、求學、打拼的人,回不了家,不能跟家人一起吃年夜飯,可他們可以在飛信上跟家人一起看春晚、一起聊天、一起笑。

  飛信要做的,就是讓他們覺得,雖然人回不去,可心在一起。

  上線前的最後一次壓力測試,趙明親自坐鎮監控室。

  幾百台伺服器同時運轉,幾萬個模擬用戶同時在線,幾千個群聊房間同時建立。

  監控大屏上的數據像瀑布一樣往下刷,CPU使用率、內存占用、網絡帶寬、磁碟讀寫,每一條曲線都在綠色安全區內起伏。

  老周盯著音頻混音的曲線,老王盯著視頻轉碼的曲線,小陳盯著伺服器負載的曲線。

  所有人的眼睛都死死地盯著那些跳動的數字,大氣都不敢出。

  監控室里的空氣像是被抽乾了一樣,悶得人喘不過氣來。

  趙明站在大屏前面,雙手抱胸,一言不發。

  測試持續了一個多小時,模擬了幾萬個用戶、幾千個群聊房間。

  沒有一條曲線越過紅色警戒線,沒有一條告警彈出,沒有一台伺服器宕機。

  老周轉過頭,看著趙明,說了一句:「趙總,壓力測試通過了。」

  趙明沒有回頭,盯著大屏上那根歸零的曲線,沉默了片刻,然後說了一句:「上線。」

  飛信的群聊視頻功能在各大應用商店同步更新。

  更新日誌里寫著一行字——「飛信群聊視頻來了。相隔千里,也能面對麵團圓。」

  用戶像潮水一樣涌了進來。

  不是幾萬,是幾十萬,是上百萬。

  有人在家庭群里開啟了視頻通話,把分散在全國各地的家人拉進了同一個房間。

  有老師在班級群里開啟了視頻通話,給學生線上答疑。

  有公司的項目組在群里開啟了視頻通話,討論節後的工作計劃。


  後台的數據每一秒都在刷新,在線用戶數突破了歷史最高峰,群聊房間數突破了預期上限,伺服器的負載在綠色區域裡穩步爬升,可沒有告警,沒有超限,沒有崩潰。

  小陳盯著音頻混音的曲線,嘴角微微上揚。

  老王盯著視頻轉碼的曲線,長長地呼出了一口氣。

  趙明拿起手機,打開了飛信。

  家庭群里,母親正在視頻通話中。

  他點了一下「加入」,幾秒鐘後,屏幕上出現了四個畫面。

  母親在廚房裡包餃子,父親在客廳里看報紙,妹妹在宿舍里複習功課,弟弟在辦公室里加班。

  四個人,四個城市,四個畫面,在同一個屏幕上同時出現。

  母親看到他的臉,笑著喊了一聲:「老大,你瘦了。」

  趙明的眼淚差點掉下來。

  他忍著沒哭,說了一句:「媽,餃子多包點,我初二就回去。」

  長青大廈的頂樓,陸長青坐在辦公室里,手裡握著那台珠峰手機。

  屏幕上顯示著長青集團的大家庭群,群里三百多個員工。

  他點了一下視頻通話的圖標,邀請全群加入。

  幾秒鐘後,屏幕上出現了幾十個畫面,密密麻麻地鋪滿了整個屏幕。

  有人在家裡的客廳,有人在辦公室的工位上,有人在出差的酒店裡,有人在回老家的火車上。

  周明義在畫面里朝他招了招手,趙岩石在工地上脫下了安全帽,劉山鷹在非洲的礦山里咧著嘴笑,孫灰狼在倉庫里舉著一瓶啤酒,林秀英在服裝廠的設計室里比了個耶。

  每一個人都在笑。

  群里還在熱鬧著,有人在唱歌,有人在講笑話,有人在曬年夜飯。

  幾百個人,幾百個畫面,幾百個笑容,通過長青的數據中心、通過長青的伺服器、通過長青的代碼,跨越千山萬水,匯聚在同一個屏幕上。

  趙明在監控室里看著伺服器負載曲線,從高峰慢慢回落,從紅色回到黃色,從黃色回到綠色。

  他靠在椅背上,長長地呼出一口氣,然後閉上眼睛。

  監控室的燈還亮著,伺服器的指示燈還在閃爍,飛信的群聊房間裡還有幾百萬人在視頻通話。

  有人在跟爸媽拜年,有人在跟戀人表白,有人在跟戰友敘舊。

  那些聲音和畫面,穿過光纜,穿過交換機,穿過路由器,穿過防火牆,抵達彼此的眼睛和耳朵。

  不卡頓,不掉線,不模糊,不延遲。


關閉
Δ