分布式轉碼集群思路


現在的轉碼程序是在通過增加WINFORM程序提高轉碼能力,存在下面兩個問題:
(1)FFMPEG轉碼非常費CPU,單個轉碼任務就會占用90%,一台主機上部署多個轉碼程序意義不大。
(2)現在的擴展,是按最小單元為一個視頻的方式進行擴展,比如一個視頻是1個小時的,最低轉碼時間是半個小時,不會因為增加轉碼機而提速。

思路:

采用一個主控機+N個轉碼機的方式,主控機負責接收任務並將MP4分割,分發給各個轉碼機,在所有轉碼機完成轉碼后,負責將最終的視頻進行合並成H264的MP4,同時切片為m3u8格式。真正實現將文件分割進行提速,這樣,半小時的轉碼任務,按5台機器同時工作計算,6分鍾左右即可完成,而且隨着轉碼機的數量投入而變短,可以最大限度的利用硬件設備提高轉碼速度。

一、分割視頻:
MP4Box -split-size 50000 test.mp4     #50MB一個文件
MP4Box -split 50 test.mp4        #50秒一個文件

二、分布式調度
不依賴於任務現成的框架,采用REDIS分隊列的思路。
(1)比如有5個處理機,就在主控程序上直接划分開5個REDIS隊列,分別是dulie_1---->dulie5
(2)然后按均勻的方式將分隔開的小MP4文件任務平均分布到各個隊列中。並將此任務的分發情況記錄到SET中,最終如果SET的結果回寫數量與最初發出去的數量一致,標識為完成。
(3)各轉碼機通過程序獲取到任務后,開始進行轉碼。完成后回寫REDIS鍵值表示此任務完成。
(4)主控機每1秒輪詢SET將完成好轉碼工作進行視頻合並,並切片為M3U8。

三、合並視頻
mp4box -cat test1.mp4 -cat test2.mp4 -new test.mp4


命令行參考:
https://mkvtoolnix.download/doc/mkvmerge.html

參考資料:
https://blog.csdn.net/qq_44884706/article/details/89227746
https://blog.csdn.net/zileqide/article/details/89648433

https://blog.csdn.net/imdyf/article/details/80621009


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM