网易视频云分享:如何搭建视频转码集群
隨著媒體技術的發展,以及硬件設備的普及和移動設備的觸角延伸之社會各個角落,人們可以隨時隨地產生信息。而這些海量信息中,有不少多媒體信息。多媒體信息成為了人們信息分享的重要方式。毫不夸張地說,現在是一個信息爆炸的時代。傳統的電視,電影,視頻網站,及至移動的自媒體(自由人)無時無刻不在吞吐著媒體信息。
這些海量信息的存在給存儲和分享都帶來了挑戰。挑戰主要有兩方面,一是如何盡可能以小成本來存儲這些信息。二是如何讓這些千差萬別的設備產生的信息能被千差萬別是設備觀看。解決問題一的方法是在盡可能地縮小這些多媒體信息的同時不降低媒體信息的質量。解決問題二的方法是將這些有千差萬別設備產生的格式各異的視頻編碼成統一的能支持各種設備的視頻格式。
幸運地是,確實存在在實踐上已經被證明是切實可行的方案存在,即視頻編碼技術。可以構建視頻編碼集群,將原始視頻編碼成目標格式,在再編碼的過程中,完成視頻壓縮和統一制式,從而實現存儲降低及制式統一。從視頻的角度可以將現在設備分割成兩個陣營,一個是蘋果陣營,另一個是非蘋果陣營。蘋果陣營的視頻只要是m3u8為封裝格式,內部編碼配以H264和AAC即可。而非蘋果陣營則是MP4為封裝格式,內部編碼已H264和AAC即可。據初略統計H264+aac的編碼組合可以達到2:1到4:1的壓縮比,可以顯著地降低存儲空間。
下圖是一個采用gearman框架搭建的簡易轉碼集群(當然該簡易集群曾經有1~2人力一個月左右的時間搭建完成,并在生產環境中部署)。
該簡易轉碼集群由四個模塊組成:
·JobServer負責接收API服務器的請求,建立轉碼Job,將Job分發給transcode-worker。
·API服務器負責接收第三方產品的轉碼請求,將其轉發給JobServer。
·transcode-worker接收JobServer的作用請求,并且完成轉碼作業。
·分布式文件系統主要用于存儲原視頻和目標視頻。之所以用分布式文件系統是因為transcode-worker部署在不同服務器上,transcode-worker需要能夠在分布式環境中訪問視頻文件。
所需技術:
1.gearman分布式任務調度框架。非常輕量級,支持C,Java,Python,PHP,C#,Ruby等各種語言,具有任何語言背景的人可以再一起工作。
2.ffmpeg,轉碼領域的瑞士軍刀。幾乎支持市面上所有商業視頻格式。實驗室格式除外。
3.搭建API的web服務器技術。本人比較習慣J2EE的Spring那套。當然你可以用ruby on rails,點Net等。
4.基礎的音視頻知識。包括H264編碼技術,視頻解壓縮知識等。
到這里,一個內容生產系統基本成型。但是還需要一個視頻內容的deliver系統,即視頻播放服務器[集群]。視頻服務器的搭建步驟請參見另外兩篇姊妹篇:如何搭建flv媒體服務器以及如何搭建MP4媒體服務器。
總結
以上是生活随笔為你收集整理的网易视频云分享:如何搭建视频转码集群的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式转码初步方案(hadoop+ffm
- 下一篇: 网易视频云:分布式转码服务高可用浅析