輕松構(gòu)建基于Serverless架構(gòu)的彈性高可用音視頻處理系統(tǒng)

前言

隨著計(jì)算機(jī)技術(shù)和 Internet 的日新月異,視頻點(diǎn)播技術(shù)因其良好的人機(jī)交互性和流媒體傳輸技術(shù)倍受教育、娛樂等行業(yè)青睞,而在當(dāng)前, 云計(jì)算平臺(tái)廠商的產(chǎn)品線不斷成熟完善, 如果想要搭建視頻點(diǎn)播類應(yīng)用,告別刀耕火種, 直接上云會(huì)掃清硬件采購、 技術(shù)等各種障礙,以阿里云為例:

創(chuàng)新互聯(lián)公司自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元新吳做網(wǎng)站,已為上家服務(wù),為新吳各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

輕松構(gòu)建基于 Serverless 架構(gòu)的彈性高可用音視頻處理系統(tǒng)

這是一個(gè)非常典型的解決方案, 對象存儲(chǔ) OSS 可以支持海量視頻存儲(chǔ),采集上傳的視頻被轉(zhuǎn)碼以適配各種終端,cdn 加速終端設(shè)備播放視頻的速度。此外還有一些內(nèi)容安全審查需求, 比如鑒黃、鑒恐等。

而在視頻點(diǎn)播解決方案中,視頻轉(zhuǎn)碼是最消耗計(jì)算力的一個(gè)子系統(tǒng),雖然您可以使用云上專門的轉(zhuǎn)碼服務(wù),但在很多情況下,您會(huì)選擇自己搭建轉(zhuǎn)碼服務(wù)。比如:

  • 您已經(jīng)在虛擬機(jī)/容器平臺(tái)上基于 FFmpeg 部署了一套視頻處理服務(wù),能否在此基礎(chǔ)上讓它更彈性,更高的可用性?
  • 您的需求只是簡單的轉(zhuǎn)碼需求,或是一些極其輕量的需求,比如獲取 OSS 上視頻前幾幀的 GIF、獲取視頻或者音頻的時(shí)長,自己搭建成本更低。
  • 各種格式的音頻轉(zhuǎn)換或者各種采樣率自定義、音頻降噪等功能
  • 您有更高級(jí)的自定義處理需求,比如視頻轉(zhuǎn)碼完成后, 需要記錄轉(zhuǎn)碼詳情到數(shù)據(jù)庫, 或者在轉(zhuǎn)碼完成后, 自動(dòng)將熱度很高的視頻預(yù)熱到 CDN 上, 從而緩解源站壓力。
  • 您有并發(fā)處理大量視頻的需求。
  • 自定義視頻處理流程中可能會(huì)有多種操作組合, 比如轉(zhuǎn)碼、加水印和生成視頻首頁 GIF。后續(xù)為視頻處理系統(tǒng)增加新需求,比如調(diào)整轉(zhuǎn)碼參數(shù),希望新功能發(fā)布上線對在線服務(wù)無影響。
  • 您的視頻源文件存放在 NAS 或者 ECS 云盤上,自建服務(wù)可以直接讀取源文件處理,而不需要將它們再遷移到 OSS 上。

如果您的視頻處理系統(tǒng)有上述需求,或者您期望實(shí)現(xiàn)一個(gè) 彈性、高可用低成本、免運(yùn)維靈活支持任意處理邏輯的視頻處理系統(tǒng),那么本文則是您期待的最佳實(shí)踐方案。

Serverless 自定義音視頻處理

在介紹具體方案之前, 先介紹兩款產(chǎn)品:

  • 函數(shù)計(jì)算 :阿里云函數(shù)計(jì)算是事件驅(qū)動(dòng)的全托管計(jì)算服務(wù)。通過函數(shù)計(jì)算,您無需管理服務(wù)器等基礎(chǔ)設(shè)施,只需編寫代碼并上傳。函數(shù)計(jì)算會(huì)為您準(zhǔn)備好計(jì)算資源,以彈性、可靠的方式運(yùn)行您的代碼,并提供日志查詢、性能監(jiān)控、報(bào)警等功能。
  • 函數(shù)工作流:函數(shù)工作流(Function Flow,以下簡稱 FnF)是一個(gè)用來協(xié)調(diào)多個(gè)分布式任務(wù)執(zhí)行的全托管云服務(wù)。您可以用順序,分支,并行等方式來編排分布式任務(wù),F(xiàn)nF 會(huì)按照設(shè)定好的步驟可靠地協(xié)調(diào)任務(wù)執(zhí)行,跟蹤每個(gè)任務(wù)的狀態(tài)轉(zhuǎn)換,并在必要時(shí)執(zhí)行用戶定義的重試邏輯,以確保工作流順利完成。

免費(fèi)開通函數(shù)計(jì)算,按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。

免費(fèi)開通函數(shù)工作流,按量付費(fèi),函數(shù)工作流有很大的免費(fèi)額度。

函數(shù)計(jì)算可靠的執(zhí)行任意邏輯, 邏輯可以是利用 FFmpeg 對視頻任何處理操作, 也可以更新視頻 meta 數(shù)據(jù)到數(shù)據(jù)庫等。

函數(shù)工作流對相應(yīng)的函數(shù)進(jìn)行編排, 比如第一步的函數(shù)是轉(zhuǎn)碼, 第二步的函數(shù)是轉(zhuǎn)碼成功后,將相應(yīng) meta 數(shù)據(jù)庫寫入數(shù)據(jù)庫等。

至此,您應(yīng)該初步理解了函數(shù)計(jì)算的自定義處理能力 + 函數(shù)工作流編排能力幾乎滿足您任何自定義處理的需求,接下來,本文以一個(gè)具體的示例展示基于函數(shù)計(jì)算和函數(shù)工作流打造的一個(gè)彈性高可用的 Serverless 視頻處理系統(tǒng),并與傳統(tǒng)方案進(jìn)行性能、成本和工程效率的對比。

簡單視頻處理系統(tǒng)

假設(shè)您是對短視頻進(jìn)行簡單的處理, 架構(gòu)方案圖如下:

輕松構(gòu)建基于 Serverless 架構(gòu)的彈性高可用音視頻處理系統(tǒng)

如上圖所示, 用戶上傳一個(gè)視頻到 OSS, OSS 觸發(fā)器自動(dòng)觸發(fā)函數(shù)執(zhí)行, 函數(shù)調(diào)用 FFmpeg 進(jìn)行視頻轉(zhuǎn)碼, 并且將轉(zhuǎn)碼后的視頻保存回 OSS。

OSS 事件觸發(fā)器, 阿里云對象存儲(chǔ)和函數(shù)計(jì)算無縫集成。您可以為各種類型的事件設(shè)置處理函數(shù),當(dāng) OSS 系統(tǒng)捕獲到指定類型的事件后,會(huì)自動(dòng)調(diào)用函數(shù)處理。例如,您可以設(shè)置函數(shù)來處理 PutObject 事件,當(dāng)您調(diào)用 OSS PutObject API 上傳視頻到 OSS 后,相關(guān)聯(lián)的函數(shù)會(huì)自動(dòng)觸發(fā)來處理該視頻。

簡單視頻處理系統(tǒng)示例工程地址

您可以直接基于示例工程部署您的簡單音視頻處理系統(tǒng)服務(wù), 但是當(dāng)您想要處理大視頻(比如 test_huge.mov ) 或者對小視頻進(jìn)行多種組合操作的時(shí)候, 您會(huì)發(fā)現(xiàn)函數(shù)很大概率會(huì)執(zhí)行失敗,原因是函數(shù)計(jì)算的執(zhí)行環(huán)境存在一些限制, 比如最大執(zhí)行時(shí)間為 10 分鐘, 最大內(nèi)存為 3G。

為了突破函數(shù)計(jì)算執(zhí)行環(huán)境的限制,引入函數(shù)工作流 FnF 去編排函數(shù)實(shí)現(xiàn)一個(gè)功能強(qiáng)大的全功能視頻處理系統(tǒng)。

全功能視頻處理系統(tǒng)

輕松構(gòu)建基于 Serverless 架構(gòu)的彈性高可用音視頻處理系統(tǒng)

如上圖所示, 假設(shè)用戶上傳一個(gè) mov 格式的視頻到 OSS,OSS 觸發(fā)器自動(dòng)觸發(fā)函數(shù)執(zhí)行, 函數(shù)調(diào)用 FnF,并行進(jìn)行提取音頻文件,同時(shí)進(jìn)行 avi,mp4,flv 格式的轉(zhuǎn)碼。 所以您可以實(shí)現(xiàn)如下需求:

  • 一個(gè)視頻文件可以同時(shí)被轉(zhuǎn)碼成各種格式以及其他各種自定義處理,比如增加水印處理或者在 after-process 更新信息到數(shù)據(jù)庫等。
  • 當(dāng)有多個(gè)文件同時(shí)上傳到 OSS,函數(shù)計(jì)算會(huì)自動(dòng)伸縮, 并行處理多個(gè)文件。
  • 對于每一個(gè)視頻,先進(jìn)行切片處理,然后并行轉(zhuǎn)碼切片,最后合成,通過設(shè)置合理的切片時(shí)間,可以大大加速較大視頻的轉(zhuǎn)碼速度。

    所謂的視頻切片,是將視頻流按指定的時(shí)間間隔,切分成一系列分片文件,并生成一個(gè)索引文件記錄分片文件的信息

  • 結(jié)合 NAS + 視頻切片, 可以解決超大視頻(大于 3G )的轉(zhuǎn)碼。

全功能視頻處理系統(tǒng)示例工程地址

示例效果:

輕松構(gòu)建基于 Serverless 架構(gòu)的彈性高可用音視頻處理系統(tǒng)

函數(shù)計(jì)算 + 函數(shù)工作流 Serverless 方案 VS 傳統(tǒng)方案

卓越的工程效率

自建服務(wù)函數(shù)計(jì)算 + 函數(shù)工作流 Serverless
基礎(chǔ)設(shè)施 需要用戶采購和管理
開發(fā)效率 除了必要的業(yè)務(wù)邏輯開發(fā),需要自己建立相同線上運(yùn)行環(huán)境, 包括相關(guān)軟件的安裝、服務(wù)配置、安全更新等一系列問題 只需要專注業(yè)務(wù)邏輯的開發(fā), 配合 FUN 工具一鍵資源編排和部署
并行&分布式視頻處理 需要很強(qiáng)的開發(fā)能力和完善的監(jiān)控系統(tǒng)來保證穩(wěn)定性 通過 FnF 資源編排即可實(shí)現(xiàn)多個(gè)視頻的并行處理以及單個(gè)大視頻的分布式處理,穩(wěn)定性和監(jiān)控交由云平臺(tái)
學(xué)習(xí)上手成本 除了編程語言開發(fā)能力和熟悉 FFmpeg 以外,可能使用 K8S 或彈性伸縮( ESS ),需要了解更多的產(chǎn)品、名詞和參數(shù)的意義 會(huì)編寫對應(yīng)的語言的函數(shù)代碼和熟悉 FFmpeg 使用即可
項(xiàng)目上線周期 在具體業(yè)務(wù)邏輯外耗費(fèi)大量的時(shí)間和人力成本,保守估計(jì)大約 30 人天,包括硬件采購、軟件和環(huán)境配置、系統(tǒng)開發(fā)、測試、監(jiān)控報(bào)警、灰度發(fā)布系統(tǒng)等 預(yù)計(jì) 3 人天, 開發(fā)調(diào)試(2人天)+ 壓測觀察(1 人天)

彈性伸縮免運(yùn)維,性能優(yōu)異

自建服務(wù)函數(shù)計(jì)算 + 函數(shù)工作流 ?Serverless
彈性高可用 需要自建負(fù)載均衡 (SLB),彈性伸縮,擴(kuò)容縮容速度較 FC 慢 FC系統(tǒng)固有毫秒級(jí)別彈性伸縮,快速實(shí)現(xiàn)底層擴(kuò)容以應(yīng)對峰值壓力,免運(yùn)維,全功能視頻處理系統(tǒng) (FnF + FC) 壓測;性能優(yōu)異, 詳情見下面的轉(zhuǎn)碼性能表
監(jiān)控報(bào)警查詢 ECS 或者容器級(jí)別的 metrics 提供更細(xì)粒度的 FnF 流程執(zhí)行以及函數(shù)執(zhí)行情況, 同時(shí)可以查詢每次函數(shù)執(zhí)行的 latency 和日志等, 更加完善的報(bào)警監(jiān)控機(jī)制

函數(shù)計(jì)算 + 函數(shù)工作流 ?Serverless 方案轉(zhuǎn)碼性能表

實(shí)驗(yàn)視頻為是 89s 的 mov 文件 4K 視頻: 4K.mov,云服務(wù)進(jìn)行 mov -> mp4 普通轉(zhuǎn)碼需要消耗的時(shí)間為 188s, 將這個(gè)參考時(shí)間記為 T

視頻切片時(shí)間FC轉(zhuǎn)碼耗時(shí)性能加速百分比
45s 160s 117.5%
25s 100s 188%
15s 70s 268.6%
10s 45s 417.8%
5s 35s 537.1%

性能加速百分比 = T / FC轉(zhuǎn)碼耗時(shí)

從上表可以看出,設(shè)置的視頻切片時(shí)間越短, 視頻轉(zhuǎn)碼時(shí)間越短, 函數(shù)計(jì)算可以自動(dòng)瞬時(shí)調(diào)度出更多的計(jì)算資源來一起完成這個(gè)視頻的轉(zhuǎn)碼, 轉(zhuǎn)碼性能優(yōu)異。

更低的成本

  • 具有明顯波峰波谷的視頻處理場景(比如只有部分時(shí)間段有視頻處理請求,其他時(shí)間很少甚至沒有視頻處理請求),選擇按需付費(fèi),只需為實(shí)際使用的計(jì)算資源付費(fèi)。
  • 沒有明顯波峰波谷的視頻處理場景,可以使用預(yù)付費(fèi)(包年包月),成本仍然極具競爭力。

    函數(shù)計(jì)算成本優(yōu)化最佳實(shí)踐文檔。

  • 假設(shè)有一個(gè)基于 ECS 搭建的視頻轉(zhuǎn)碼服務(wù),由于是 CPU 密集型計(jì)算, 因此在這里將平均 CPU 利用率作為核心參考指標(biāo)對評(píng)估成本,以一個(gè)月為周期,10 臺(tái) C5 ECS 的總計(jì)算力為例, 總的計(jì)算量約為 30% 場景下, 兩個(gè)解決方案 CPU 資源利用率使用情況示意圖大致如下:

輕松構(gòu)建基于 Serverless 架構(gòu)的彈性高可用音視頻處理系統(tǒng)

由上圖預(yù)估出如下計(jì)費(fèi)模型:

  • 函數(shù)計(jì)算預(yù)付費(fèi) 3CU 一個(gè)月: 246.27 元, 計(jì)算能力等價(jià)于 ECS 計(jì)算型 C5
  • ECS 計(jì)算型 C5 (2vCPU,4GB)+云盤: 包月219 元
  • 函數(shù)計(jì)算按量付費(fèi)占整個(gè)計(jì)算量的占比 <= 10%,費(fèi)用約為 3×864×10% = 259.2 元,(3G 規(guī)格的函數(shù)滿負(fù)載跑滿一個(gè)月費(fèi)用為:0.00011108×3×30×24×3600 = 863.8,詳情查看計(jì)費(fèi))
ITEM平均CPU利用率計(jì)算費(fèi)用總計(jì)
函數(shù)計(jì)算組合付費(fèi) >=80% 998(246.27×3+259.2) <= 998
按峰值預(yù)留ECS <=30% 2190(10*219) >=2190

在這個(gè)模型預(yù)估里面,可以看出 FC 方案具有很強(qiáng)的成本競爭力,在實(shí)際場景中, 基于 ECS 自建的視頻轉(zhuǎn)碼服務(wù) CPU 利用甚至很難達(dá)到 20%, 理由如下:

  • 可能只有部分時(shí)間段有視頻轉(zhuǎn)碼請求
  • 為了用戶體驗(yàn),視頻轉(zhuǎn)碼速度有一定的要求,可能一個(gè)視頻轉(zhuǎn)碼就需要 10 臺(tái) ECS 并行處理來轉(zhuǎn)碼, 因此只能預(yù)備很多 ECS

因此,在實(shí)際場景中, FC 在視頻處理上的成本競爭力遠(yuǎn)強(qiáng)于上述模型。

  • 即使和云廠商視頻轉(zhuǎn)碼服務(wù)單價(jià) PK, 該方案仍有很強(qiáng)的成本競爭力
    <br />經(jīng)實(shí)驗(yàn)驗(yàn)證, 函數(shù)內(nèi)存設(shè)置為3G,基于該方案從 mov 轉(zhuǎn)碼為 mp4 的費(fèi)用概覽表:

    實(shí)驗(yàn)視頻為是 89s 的 mov 文件視頻, 測試視頻地址:
    480P.mov 720P.mov ?1080P.mov ?4K.mov
    測試命令: ffmpeg -i test.mov -preset superfast test.mp4

  • 格式轉(zhuǎn)換
分辨率bitrate幀率FC 轉(zhuǎn)碼耗費(fèi)時(shí)間FC 轉(zhuǎn)碼費(fèi)用騰訊云視頻處理費(fèi)用成本下降百分比
標(biāo)清 640*480 618 kb/s 24 11s 0.00366564 0.032 88.5%
高清 1280*720 1120 kb/s 24 31s 0.01033044 0.065 84.1%
超清 1920*1080 1942 kb/s 24 66s 0.02199384 0.126 82.5%
4K ?3840*2160 5250 kb/s 24 260s 0.0866424 0.556 84.4%

成本下降百分比 = (騰訊云視頻處理費(fèi)用 - FC 轉(zhuǎn)碼費(fèi)用)/ 騰訊云視頻處理費(fèi)用
騰訊云視頻處理,計(jì)費(fèi)使用普通轉(zhuǎn)碼,轉(zhuǎn)碼時(shí)長不足一分鐘,按照一分鐘計(jì)算,這里計(jì)費(fèi)采用的是 2 min,即使采用 1.5 min 計(jì)算, 成本下降百分比也在 80% 左右

  • 從上表可以看出, 基于函數(shù)計(jì)算 + 函數(shù)工作流的方案在計(jì)算資源成本上具有顯著優(yōu)勢。

操作部署

免費(fèi)開通函數(shù)計(jì)算,按量付費(fèi),函數(shù)計(jì)算有很大的免費(fèi)額度。

免費(fèi)開通函數(shù)工作流,按量付費(fèi),函數(shù)工作流有很大的免費(fèi)額度。

免費(fèi)開通文件存儲(chǔ)服務(wù)NAS, 按量付費(fèi)

詳情見各自示例工程的 README

  • 簡單視頻處理系統(tǒng)示例工程地址
  • 全功能視頻處理系統(tǒng)示例工程地址

總結(jié)

基于函數(shù)計(jì)算 FC 和函數(shù)工作流 FnF 的彈性高可用視頻處理系統(tǒng)天然繼承了這兩個(gè)產(chǎn)品的優(yōu)點(diǎn):

  • 無需采購和管理服務(wù)器等基礎(chǔ)設(shè)施,只需專注視頻處理業(yè)務(wù)邏輯的開發(fā),大幅縮短項(xiàng)目交付時(shí)間和人力成本
  • 提供日志查詢、性能監(jiān)控、報(bào)警等功能快速排查故障
  • 以事件驅(qū)動(dòng)的方式觸發(fā)應(yīng)用響應(yīng)用戶請求
  • 免運(yùn)維,毫秒級(jí)別彈性伸縮,快速實(shí)現(xiàn)底層擴(kuò)容以應(yīng)對峰值壓力,性能優(yōu)異
  • 成本極具競爭力

最后一一回答一下之前列出的問題:

Q1: 您已經(jīng)在虛擬機(jī)/容器平臺(tái)上基于 FFmpeg 部署了一套視頻處理服務(wù),能否在此基礎(chǔ)上讓它更彈性,更高的可用性?

A: 如工程示例所示,在虛擬機(jī)/容器平臺(tái)上基于 FFmpeg 的服務(wù)可以輕松切換到函數(shù)計(jì)算, FFmpeg 相關(guān)命令可以直接移值到函數(shù)計(jì)算,改造成本較低, 同時(shí)天然繼承了函數(shù)計(jì)算彈性高可用性特性。

Q2:您的需求只是簡單的轉(zhuǎn)碼需求,或是一些極其輕量的需求,比如獲取 OSS 上視頻前幾幀的 GIF 等。 自己搭建成本更低。

A: 函數(shù)計(jì)算天生就是解決這些自定義問題, 你的代碼你做主, 代碼中快速執(zhí)行幾個(gè) FFmpeg 的命令即可完成需求。<br />典型示例: fc-oss-ffmpeg

Q3: 您有更高級(jí)的自定義處理需求,比如視頻轉(zhuǎn)碼完成后, 需要記錄轉(zhuǎn)碼詳情到數(shù)據(jù)庫, 或者在轉(zhuǎn)碼完成后, 自動(dòng)將熱度很高的視頻預(yù)熱到 CDN 上, 從而緩解源站壓力。

A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計(jì)算 + 函數(shù)工作流方案),after-process 中可以做一些自定義的操作, 您還可以基于此流程再做一些額外處理等, 比如:

  • 再增加后續(xù)流程
  • 最開始增加 pre-process

Q4: 您有并發(fā)同時(shí)處理大量視頻的需求。

A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計(jì)算 + 函數(shù)工作流方案), 當(dāng)有多個(gè)文件同時(shí)上傳到 OSS, 函數(shù)計(jì)算會(huì)自動(dòng)伸縮, 并行處理多個(gè)文件。詳情可以參考 全功能視頻處理系統(tǒng) (FnF + FC) 壓測

Q5: 自定義視頻處理流程中可能會(huì)有多種操作組合, 比如轉(zhuǎn)碼、加水印和生成視頻首頁 GIF,后續(xù)為視頻處理系統(tǒng)增加新需求,比如調(diào)整轉(zhuǎn)碼參數(shù),希望新功能發(fā)布上線對在線服務(wù)無影響。

A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計(jì)算 + 函數(shù)工作流方案), FnF 只負(fù)責(zé)編排調(diào)用函數(shù), 因此只需要更新相應(yīng)的處理函數(shù)即可,同時(shí)函數(shù)有 version 和 alias 功能, 更好地控制灰度上線, 函數(shù)計(jì)算版本管理

Q6: 您的視頻源文件存放在 NAS 或者 ECS 云盤上,自建服務(wù)可以直接讀取源文件處理,而不需要將他們再遷移到 OSS 上。

A: 函數(shù)計(jì)算可以掛載 NAS, 直接對 NAS 中的文件進(jìn)行處理

“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的技術(shù)圈?!?/p>

網(wǎng)站欄目:輕松構(gòu)建基于Serverless架構(gòu)的彈性高可用音視頻處理系統(tǒng)
文章鏈接:http://bm7419.com/article20/phocjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、定制網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站營銷外貿(mào)網(wǎng)站建設(shè)、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司