開發僅用兩天三個人,談談小咖秀背后的技術故事
小咖秀 是一款非常火爆的移動視頻拍攝應用,據 愛范兒 消息,它三個月的下載量就超過了1500萬。其CEO官韓坤表示,小咖秀只有兩個后端工程師和一個運維人員,開發周期僅有兩天,看來在這之前團隊已經有了 足夠的技術積累。記得前不久,另外一個爆紅的移動應用足記在突然來了100萬用戶之后就遇到了技術上的問題,這也是很多移動應用的短板。那小咖秀是如何做 技術積累的?一個小團隊是如何玩轉如此大用戶量的應用的?InfoQ記者采訪了小咖秀的CTO湯力嘉。
InfoQ:能介紹下你們團隊和產品目前的情況嗎?
湯力嘉:炫一下科技成立于2011年,目前公司150人,一半是技術產品。公司旗下三款產品:秒拍、小咖秀、Vitamio多媒體框架。秒拍是 微博官方的短視頻拍攝應用,是最大的短視頻分享平臺;小咖秀是時下最火的對嘴型拍攝應用,剛推出即占據Apple Store總榜第一半月之久;Vitamio是多媒體一攬子解決方案,包括視頻拍攝、美化、轉碼、播放等一系列SDK,全球有2萬款應用在使用,覆蓋用戶 超過5億。
InfoQ: 小咖秀和秒拍都是視頻類的應用,針對這類的應用,你們的架構是怎么樣的?
湯力嘉:上傳流程:應用端通過拍攝或導入等方式生成視頻,經過特效加工美化,生成MP4文件。通過全局調度系統,確定就近的上傳點。應用進行視頻上傳后,服務器會進行截圖等操作。最后視頻經過審核后,完成整個上傳流程。
播放流程:用戶打開應用或HTML 5頁面上進行視頻播放。根據不同的操作系統,選擇合適的視頻格式。通過全局調度系統,選擇就近的質量最好的播放CDN進行播放。
InfoQ: 小咖秀和秒拍這樣的應用最大的挑戰是什么?為了應對這些挑戰,你們做了怎么樣的調整?
湯力嘉:在視頻量爆發之后,我們凸顯的問題是:如何快速甄選出優質視頻,對優質內容進行最大可能的傳播。因此我們加入很多觸發規則以及監控體 系,隨時發現熱點視頻并快速消費。從產品層面上,我們也配合這些內容推出24小時熱榜欄目,得到很多用戶的喜愛。同時由于用戶群體的多樣化,不同用戶消費 和渴望看到的內容有很大的差別,為此我們也組建了數據挖掘團隊,通過大數據分析,給不同用戶推薦不一樣的內容,完全根據用戶的行為作推薦,通過個性化推薦 后,視頻播放量上升30%以上,這也是我們接下來持續優化的方向。
由于視頻數量越來越多,內容的審核壓力也越來越大,除了人工審核以外,我們也使用了多方面的技術和手段,進行一些半自動化的審核加速,例如對違規視頻的分析和預審,能把高危視頻優先審核;另外根據用戶行為篩選高風險視頻,以及應用機器學習進行反垃圾評論過濾。
InfoQ:足記在爆紅之后,服務器曾一度垮掉,小咖秀有遇到這樣的訪問壓力嗎?
湯力嘉:視頻分享講究的是即時性,尤其在微博等社交平臺上分享尤為突出,視頻在剛分享時,就已是最熱的時候。例如一個明星大V的視頻分享到微博 上,瞬間就會吸引他的粉絲打開觀看,這時往往很考驗系統對突發的海量請求做出及時響應。因此在系統的設計之初,我們就一直按著大流量突發請求的方式去做。
系統的設計都是可以隨時橫向擴展的,所有邏輯請求都會考慮兩級的緩存進行分流,確保數據庫的輕負載。邏輯服務上,我們使用可彈性伸縮的云平臺, 以應對突發的流量。視頻服務上,我們接入了多家CDN廠商進行服務,并且有實時追蹤系統,能對出現故障的節點進行快速的屏蔽,同時對應每一個請求,都會選 擇出最優的節點進行服務(包括性價比、速度和可用性)。
InfoQ:手機端錄制的視頻會比較大,特別是一些像素高的手機,小咖秀客戶端有沒有對視頻進行壓縮處理,請問使用到了哪些技術。服務器端存儲的時候是如何進行優化的?
湯力嘉:我們有強大的視頻處理團隊,多年來一直進行視頻處理優化和應用,手機端的拍攝模塊,我們使用了Vitamio拍攝 SDK(VCamera SDK)進行視頻的拍攝和生成,視頻大小會壓縮到合適網絡分享的程度,視頻生成后,服務器端沒有對視頻進行二次處理,這樣也加快了視頻的準備過程,為視頻 快速傳播祭奠基礎。
在服務器端存儲上,主要是需要考慮安全性,其次考慮視頻存儲的性能,尤其是視頻讀取的性能,便于視頻的快速加載播放,所以目前的方案是在全國三地架設存儲區,每一個視頻都會同步三份,以確保視頻的安全,同時便于就近快速訪問。
InfoQ:視頻特效這塊,談談你們的解決方案?
湯力嘉:隨著手機性能越來越好,手機對視頻的處理邏輯已經越來越復雜了,我們的架構是把視頻處理過程分成source、filter、 render三個部分,source是各種輸入源,可以是文件,可以是攝像頭,可以是網絡流等,用于源視頻輸入到處理框架上;filter是各種各樣的不 同特效,因此可以很方便的做擴展;render是處理完的視頻如何輸出,可以是輸出成文件,可以輸出到屏幕上等等。這三部分組件可以通過腳本的方式,更換 不一樣的處理邏輯,實現不同的特效。
InfoQ:視頻與音頻的拼接,特效的處理,你們的解決方案是怎么樣的?
湯力嘉:在視頻的基本編輯處理方面,iOS系統有對應的API,可以直接使用,對于Android來說,我們使用FFmpeg框架進行基礎視頻編輯處理。特效的處理,我們主要使用OpenGL進行各種效果的疊加。