天天看點

展曉凱:“零經驗”的我與唱吧從零到四億

正如展曉凱總結的那樣,一個技術人或團隊的成功離不開業務打下的基礎,業務高層的高瞻遠矚以及對技術的敬畏,以及技術人的學習與探索精神。LiveVideoStack對全民快樂研發進階總監展曉凱進行了郵件采訪,他總結了在與唱吧從零成長的曆程。作為一個“零”多媒體基礎的技術人,展曉凱的經驗也許是你成長路上的參考。

策劃 / LiveVideoStack

LiveVideoStack:展曉凱你好,能否簡要介紹下自己,包括目前的主要工作及關注領域?

展曉凱:大家好,我是展曉凱,Java出身,曾經工作于淘寶參與開發機票搜尋業務,然後在唱吧做了5年多,主要從事音視訊方面的開發與架構設計,正好伴随着唱吧從剛上線到幾千萬月活的階段,這一階段不論是技術以及對網際網路的認識都成長了很多,目前工作于全民快樂,主要從事海外直播相關的業務-包括視訊直播、音頻直播、PGC直播(知識答題、專業網紅的高清直播)以及接入第三方的連麥廠商做互動直播。目前我所關注的領域主要是低延時、高并發、高清晰度的流媒體應用的架構設計與實踐。

LiveVideoStack:從淘寶機票搜尋業務到唱吧多媒體技術,技術的轉換跨度不小。在加入唱吧前是否有多媒體開發的經驗?如果沒有,你是如何完成這一轉換?

展曉凱:這個轉換确實不小,并不是我預期中的轉變,本來在淘寶的時候是想借着淘寶這個平台把Java的基礎以及中間件深入的去琢磨學習一下,但是沒有想到過了7年以後,現在卻在另外一個領域紮根了。說到轉換過程其實也是摸着石頭過河,當時在唱吧沒有專業做音視訊這一塊的技術人員,事情就在那裡,我們也隻能硬着頭皮去做,前面我說過我是Java出身,當時做音視訊之前并沒有在工作中寫過C或者C++的代碼,一大堆音視訊的概念,新的文法需要熟悉,新的架構(FFmpeg)需要學習,是以當時确實舉步維艱。但是現在回過頭來看我自己技術棧的轉換其實也是蠻成功的,而我複盤了一下具體有哪幾點關鍵因素促使我轉換成功的呢?主要是以下幾點:

  1. 唱吧老闆們大都是技術出身,整體的技術氛圍還是很不錯的,知道需要在技術方面的投入可能不是立馬就有回報的,是以給了我很大的耐心;
  2. 我本身還是投入了很多時間與精力去思考,在做一個平台(Android)的時候也同時在想另外一個平台(iOS)的事情,想如何提高整個開發團隊的效率,降低維護成本
  3. 公司的業務發展非常健康,而和我對音視訊技術的進一步深入起到了一個正向循環的促進作用,并且公司的業務也從音頻發展到視訊,從點播發展到了直播,跟着一個産品疊代多年,也給了我對之前設計的架構進行調整,實踐總結的機會,總之公司業務的健康發展讓我對整個架構的演進以及自己知識體系的形成有非常大的幫助。

LiveVideoStack:從唱吧上線到4億使用者,新産品,不斷暴增的使用者,你是如何完成知識體系不斷更新,來實作對業務的支撐?

展曉凱:之前也聊到過,對于音視訊我并非是科班出身,大學時候的确有多媒體方向,當時也完全被我忽視掉了,而在工作中需要用到的任何知識都得去補充,包括基礎樂理知識,國小時候都學過,但是當時就沒學明白,再加上中國的應試教育根本也不重視這些方面的培養,這确實導緻了很多東西需要去補充。但是經曆過來之後,讓我成長很大的是我接觸新事物的能力和我的架構能力,其實架構設計本身是一個非常有意思的事情,主要跟你的經驗有關系(當然也跟你對所做架構領域的熟知程度有關系), 然後需要花時間去思考,一般會得出幾個架構,最後再考慮一下優缺點和對未來業務的支撐情況,選擇一個适合自己目前産品的架構。其實讀過的優秀代碼越多(我曾經讀過幾個印象比較深刻的源碼庫:kxMovie,Volley,GPUImage,FFmpeg,目前有時間會去讀WebRTC),其實就越有助于做出更好的架構, 跟的産品疊代越多,也有助于你實踐架構以及對架構演進的機會就會越多。

LiveVideoStack:唱吧從上線到4億使用者,經曆了哪些重大的技術更新,每次重大更新解決了哪些問題?

展曉凱:記得好像是2013年吧,從純音頻到視訊,這個改變其實是比較大的,如果現在讓我來重新做這個架構設計可能會很容易,但是當時就是完全使用系統的API,很簡陋的實作了錄制視訊、釋出視訊的核心功能;然後要想做好視訊這條線,必須得自己能控制得住播放器(包括音頻原始資料、視訊原始資料、解碼器等),是以我們開始自己實作了一套播放器(當時iOS使用的是kxMovie,Android我自己照着kxMovie撸了一套),播放器支援普通播放的同時,可以支援音頻的處理(音效處理,混音處理等);接着我們還需要處理視訊,比如美顔、比如視訊合唱等業務,這個時候我就開發了一套跨平台的視訊處理系統(VideoEffectProcessor-基于OpenGL ES的跨平台視訊幀處理系統),實作了美顔、貼紙以及視訊主題的功能,後來我們又開發我了想和你唱的視訊、音頻關聯的玩法;到這裡其實我們公司對于音視訊的技術積累已經比較豐富了,這個時候我們公司又開展了一條直播産品線,從錄播做到直播我又把整體架構進行了一次梳理和重構,同時滿足錄播與直播的業務需求,有一些基礎公用的子產品,然後不同業務有自己特殊的實作繼承自公用子產品,公共子產品倉庫使用git submodule進行管理。

LiveVideoStack:能否聊聊從零到4億使用者,你和你的團隊經曆了哪些難忘的故事?

展曉凱:難忘的事情有很多,很感激和戰友一塊經曆過的歲月,從最開始沒有多少使用者,到突然有一天使用者流量把我們伺服器給撐爆,上線2個月我們使用者就破千萬,後面陸陸續續也經曆過幾個爆點和挫折(用戶端的瘦身、服務端受到半連接配接的攻擊,對直播一點都不懂就踏入音頻直播的行業),這其中無論伺服器還是用戶端都慢慢經曆過好多次架構的演進,團隊人員也擴充了很多,比較慶幸的是整體團隊的健康程度還是比較好,不會因為某幾個人的離開對産品的穩定程度以及疊代速度差生很大的影響,這其中也不得不提到有很多競争對手,面臨壓力的同時,也在使得我們的産品提升的更好,整個團隊都一起克服困難,共同成長,其實我認為最關鍵的是大家互相信任,都是想把産品做好,給我們的使用者提供更好的服務,隻有這樣才能展現出我們花了這麼多時間和精力的價值。

LiveVideoStack:聊聊《音視訊開發進階指南:基于Android與iOS平台的實踐》這本書吧。你在前言重提到,在工作中“邊學邊做”。這和大部分初學多媒體開發的技術人一樣,并非科班出身。如此看來,這本書真的适合哪些沒有多少多媒體開發經驗的技術人嗎?

展曉凱:這本書傾入了我很多精力,本質是想可以幫助更多入門不了的人或者剛開始入門的人可以順利的走進來這個領域,可以讓大家寫出更優秀的代碼,為自己的公司貢獻出更大的價值,如果為我們音視訊領域還能有一點推進的話,那真是我的榮幸了。因為多媒體領域其實是很大的一個領域,包括但不限于采集、處理、編碼、傳輸,解碼,渲染等等,每一部分深入的話都可以出一本書來進行學習,比如傳輸,大家最常用的可能就是RTMP和HLS,而基于UDP的一些協定可能就會更加複雜一些,比如kcp、srt、rtp/rtcp,要想吃透傳輸這部分,絕非一朝一夕的事情,而這本書是以移動平台作為最終運作目标,來把整個音視訊的知識體系進行了一次梳理。其實我也接到了很多回報,有正面的,也有負面的,有的讀者戲稱看了幾天之後感覺從此對音視訊無望,說要從入門到放棄,有的讀者覺得寫得很好,很适合他們,當然正面的居多。

其實借着這個機會我也想跟一些讀者說幾句話,其實大家的智商都是差不多的(天才除外),那什麼樣的人才能更被企業認可呢?自學能力強、溝通能力好、個人習慣好的人會更被認可,這部分人會更加容易的做好事情。是以大家看書也是一樣,我寫的這本書其實從目錄大綱上就可以看出大家需要掌握的知識,讓大家先有一個整體架構的認知,然後對于每一個章節也都會有對應的代碼案例産出(github.com/zhanxiaokai),隻要大家對着書以及對着代碼花時間、花精力慢慢看下來,我相信肯定會有收獲,因為在書中不單單對于音視訊有所講解,包括對于一些架構的設計,一些設計模式的實踐我也會帶出來進行講解,分析這個架構的優缺點,到底适不适合當下以及未來的産品發展,是以大家對于看書來講還是要沉得下心來,花時間花精力去學習,去總結,當然如果書中我講的不夠透徹的,或者有錯誤的歡迎大家郵件跟我交流([email protected]),或者去書的網站上跟我溝通(music-video.cn)。

LiveVideoStack:在5G、4K時代到來之後,對多媒體技術帶來哪些挑戰?對于開發而言,有哪些機遇?

展曉凱:我個人從事的主要方向還是在移動網際網路領域,而對于已經出現了好久的4K,目前在廣電領域是有投入生産的,但是目前在移動網際網路領域還是很少被使用到,而多媒體領域向來也是從廣電領域開始先進入生産,慢慢的走向移動互利網場景,給使用者帶來更好的感覺與便利。而在移動互利網的應用領域,其實大家最關心的還是能否快速的內建到移動裝置中,比如H.265出來了好久,大家最終用的最好的也隻是iPhone7裝置以上使用VideoToolbox來做硬體編碼,而像AV1何時可以比較容易的內建到移動裝置中我認為是比較重要的。

當然不論在任何行業都會分為研究型和應用型兩個方向,這兩個方向都是很重要的,沒有研究型的人才或者組織來貢獻出一些标準、一些實際的代碼産出,是很難最終被應用到實際應用場景中的,反之,隻有應用場景發展的越好,才能給研究型人才提供更好的專利費用、更好的環境。其實不論是任何新技術、新方向隻要能給人類帶來價值,就一定可以獲得相應的資源,而多媒體領域在這個理論下表現得尤為突出。

LiveVideoStack:在你看來,2018年哪些多媒體相關技術将得到快速發展?

展曉凱:我覺得WebRTC技術會在2018年得到飛速發展,其實本身從人的生理感覺能力來講,文字->圖檔->語音->視訊->直播->實時互動,這是感覺的層級遞進關系,而流媒體目前可以說是百花齊放,這兩年實時互動(RTC)的發展也催生了各個産業往前更加邁一步的能力,從秀場直播的連麥、PK,教育行業的一對一教學或者小班課的産品,遊戲行業狼人殺等實時互動的桌遊産品,這無疑都是實時互動領域的發展給各個行業帶來的巨大紅利,而WebRTC也是Google開源的非常強大的架構,當然一個普通的小公司要想直接基于WebRTC進行二次開發來滿足自己的需求還是太難了,這個門檻會比較高,前期使用一些連麥的服務商來快速驗證産品的邏輯、留存以及盈利的可能性是正确的做法,當然後期如果使用者量起來了,多接幾家廠商,包括做自研RTC也是可行的,具體技術架構和技術團隊的建構應該是完全根據産品發展階段來慢慢演變的,沒有絕對正确的事情,隻有最适合的事情。

LiveVideoStackCon 2018講師招募

LiveVideoStackCon 2018是音視訊技術領域的綜合技術大會,今年是在10月19-20日在北京舉行。大會共設立18個專題,預計邀請超過80位技術專家。如果你在某一領域獨當一面,歡迎申請成為LiveVideoStackCon 2018的講師,讓你的經驗幫到更多人,你可以通過[email protected]送出演講資訊。了解大會更多詳情,點選【閱讀原文】通路LiveVideoStackCon 2018官網,報名即刻享受7折優惠。

繼續閱讀