您好,登錄后才能下訂單哦!
隨著計算機技術(shù)和 Internet 的日新月異,視頻點播技術(shù)因其良好的人機交互性和流媒體傳輸技術(shù)倍受教育、娛樂等行業(yè)青睞,而在當(dāng)前, 云計算平臺廠商的產(chǎn)品線不斷成熟完善, 如果想要搭建視頻點播類應(yīng)用,告別刀耕火種, 直接上云會掃清硬件采購、 技術(shù)等各種障礙,以阿里云為例:
這是一個非常典型的解決方案, 對象存儲 OSS 可以支持海量視頻存儲,采集上傳的視頻被轉(zhuǎn)碼以適配各種終端,CDN 加速終端設(shè)備播放視頻的速度。此外還有一些內(nèi)容安全審查需求, 比如鑒黃、鑒恐等。
而在視頻點播解決方案中,視頻轉(zhuǎn)碼是最消耗計算力的一個子系統(tǒng),雖然您可以使用云上專門的轉(zhuǎn)碼服務(wù),但在很多情況下,您會選擇自己搭建轉(zhuǎn)碼服務(wù)。比如:
如果您的視頻處理系統(tǒng)有上述需求,或者您期望實現(xiàn)一個 彈性、高可用、低成本、免運維、靈活支持任意處理邏輯 的視頻處理系統(tǒng),那么本文則是您期待的最佳實踐方案。
在介紹具體方案之前, 先介紹兩款產(chǎn)品:
免費開通函數(shù)計算,按量付費,函數(shù)計算有很大的免費額度。
免費開通函數(shù)工作流,按量付費,函數(shù)工作流有很大的免費額度。
函數(shù)計算可靠的執(zhí)行任意邏輯, 邏輯可以是利用 FFmpeg 對視頻任何處理操作, 也可以更新視頻 meta 數(shù)據(jù)到數(shù)據(jù)庫等。
函數(shù)工作流對相應(yīng)的函數(shù)進行編排, 比如第一步的函數(shù)是轉(zhuǎn)碼, 第二步的函數(shù)是轉(zhuǎn)碼成功后,將相應(yīng) meta 數(shù)據(jù)庫寫入數(shù)據(jù)庫等。
至此,您應(yīng)該初步理解了函數(shù)計算的自定義處理能力 + 函數(shù)工作流編排能力幾乎滿足您任何自定義處理的需求,接下來,本文以一個具體的示例展示基于函數(shù)計算和函數(shù)工作流打造的一個彈性高可用的 Serverless 視頻處理系統(tǒng),并與傳統(tǒng)方案進行性能、成本和工程效率的對比。
假設(shè)您是對短視頻進行簡單的處理, 架構(gòu)方案圖如下:
如上圖所示, 用戶上傳一個視頻到 OSS, OSS 觸發(fā)器自動觸發(fā)函數(shù)執(zhí)行, 函數(shù)調(diào)用 FFmpeg 進行視頻轉(zhuǎn)碼, 并且將轉(zhuǎn)碼后的視頻保存回 OSS。
OSS 事件觸發(fā)器, 阿里云對象存儲和函數(shù)計算無縫集成。您可以為各種類型的事件設(shè)置處理函數(shù),當(dāng) OSS 系統(tǒng)捕獲到指定類型的事件后,會自動調(diào)用函數(shù)處理。例如,您可以設(shè)置函數(shù)來處理 PutObject 事件,當(dāng)您調(diào)用 OSS PutObject API 上傳視頻到 OSS 后,相關(guān)聯(lián)的函數(shù)會自動觸發(fā)來處理該視頻。
簡單視頻處理系統(tǒng)示例工程地址
您可以直接基于示例工程部署您的簡單音視頻處理系統(tǒng)服務(wù), 但是當(dāng)您想要處理大視頻(比如 test_huge.mov ) 或者對小視頻進行多種組合操作的時候, 您會發(fā)現(xiàn)函數(shù)很大概率會執(zhí)行失敗,原因是函數(shù)計算的執(zhí)行環(huán)境存在一些限制, 比如最大執(zhí)行時間為 10 分鐘, 最大內(nèi)存為 3G。
為了突破函數(shù)計算執(zhí)行環(huán)境的限制,引入函數(shù)工作流 FnF 去編排函數(shù)實現(xiàn)一個功能強大的全功能視頻處理系統(tǒng)。
如上圖所示, 假設(shè)用戶上傳一個 mov 格式的視頻到 OSS,OSS 觸發(fā)器自動觸發(fā)函數(shù)執(zhí)行, 函數(shù)調(diào)用 FnF,并行進行提取音頻文件,同時進行 avi,mp4,flv 格式的轉(zhuǎn)碼。 所以您可以實現(xiàn)如下需求:
對于每一個視頻,先進行切片處理,然后并行轉(zhuǎn)碼切片,最后合成,通過設(shè)置合理的切片時間,可以大大加速較大視頻的轉(zhuǎn)碼速度。
所謂的視頻切片,是將視頻流按指定的時間間隔,切分成一系列分片文件,并生成一個索引文件記錄分片文件的信息
全功能視頻處理系統(tǒng)示例工程地址
示例效果:
自建服務(wù) | 函數(shù)計算 + 函數(shù)工作流 Serverless | |
---|---|---|
基礎(chǔ)設(shè)施 | 需要用戶采購和管理 | 無 |
開發(fā)效率 | 除了必要的業(yè)務(wù)邏輯開發(fā),需要自己建立相同線上運行環(huán)境, 包括相關(guān)軟件的安裝、服務(wù)配置、安全更新等一系列問題 | 只需要專注業(yè)務(wù)邏輯的開發(fā), 配合 FUN 工具一鍵資源編排和部署 |
并行&分布式視頻處理 | 需要很強的開發(fā)能力和完善的監(jiān)控系統(tǒng)來保證穩(wěn)定性 | 通過 FnF 資源編排即可實現(xiàn)多個視頻的并行處理以及單個大視頻的分布式處理,穩(wěn)定性和監(jiān)控交由云平臺 |
學(xué)習(xí)上手成本 | 除了編程語言開發(fā)能力和熟悉 FFmpeg 以外,可能使用 K8S 或彈性伸縮( ESS ),需要了解更多的產(chǎn)品、名詞和參數(shù)的意義 | 會編寫對應(yīng)的語言的函數(shù)代碼和熟悉 FFmpeg 使用即可 |
項目上線周期 | 在具體業(yè)務(wù)邏輯外耗費大量的時間和人力成本,保守估計大約 30 人天,包括硬件采購、軟件和環(huán)境配置、系統(tǒng)開發(fā)、測試、監(jiān)控報警、灰度發(fā)布系統(tǒng)等 | 預(yù)計 3 人天, 開發(fā)調(diào)試(2人天)+ 壓測觀察(1 人天) |
自建服務(wù) | 函數(shù)計算 + 函數(shù)工作流 ?Serverless | |
---|---|---|
彈性高可用 | 需要自建負載均衡 (SLB),彈性伸縮,擴容縮容速度較 FC 慢 | FC系統(tǒng)固有毫秒級別彈性伸縮,快速實現(xiàn)底層擴容以應(yīng)對峰值壓力,免運維,全功能視頻處理系統(tǒng) (FnF + FC) 壓測;性能優(yōu)異, 詳情見下面的轉(zhuǎn)碼性能表 |
監(jiān)控報警查詢 | ECS 或者容器級別的 metrics | 提供更細粒度的 FnF 流程執(zhí)行以及函數(shù)執(zhí)行情況, 同時可以查詢每次函數(shù)執(zhí)行的 latency 和日志等, 更加完善的報警監(jiān)控機制 |
函數(shù)計算 + 函數(shù)工作流 ?Serverless 方案轉(zhuǎn)碼性能表
實驗視頻為是 89s 的 mov 文件 4K 視頻: 4K.mov,云服務(wù)進行 mov -> mp4 普通轉(zhuǎn)碼需要消耗的時間為 188s, 將這個參考時間記為 T
視頻切片時間 | FC轉(zhuǎn)碼耗時 | 性能加速百分比 |
---|---|---|
45s | 160s | 117.5% |
25s | 100s | 188% |
15s | 70s | 268.6% |
10s | 45s | 417.8% |
5s | 35s | 537.1% |
性能加速百分比 = T / FC轉(zhuǎn)碼耗時
從上表可以看出,設(shè)置的視頻切片時間越短, 視頻轉(zhuǎn)碼時間越短, 函數(shù)計算可以自動瞬時調(diào)度出更多的計算資源來一起完成這個視頻的轉(zhuǎn)碼, 轉(zhuǎn)碼性能優(yōu)異。
沒有明顯波峰波谷的視頻處理場景,可以使用預(yù)付費(包年包月),成本仍然極具競爭力。
函數(shù)計算成本優(yōu)化最佳實踐文檔。
由上圖預(yù)估出如下計費模型:
ITEM | 平均CPU利用率 | 計算費用 | 總計 |
---|---|---|---|
函數(shù)計算組合付費 | >=80% | 998(246.27×3+259.2) | <= 998 |
按峰值預(yù)留ECS | <=30% | 2190(10*219) | >=2190 |
在這個模型預(yù)估里面,可以看出 FC 方案具有很強的成本競爭力,在實際場景中, 基于 ECS 自建的視頻轉(zhuǎn)碼服務(wù) CPU 利用甚至很難達到 20%, 理由如下:
因此,在實際場景中, FC 在視頻處理上的成本競爭力遠強于上述模型。
即使和云廠商視頻轉(zhuǎn)碼服務(wù)單價 PK, 該方案仍有很強的成本競爭力
<br />經(jīng)實驗驗證, 函數(shù)內(nèi)存設(shè)置為3G,基于該方案從 mov 轉(zhuǎn)碼為 mp4 的費用概覽表:
實驗視頻為是 89s 的 mov 文件視頻, 測試視頻地址:
480P.mov 720P.mov ?1080P.mov ?4K.mov
測試命令:ffmpeg -i test.mov -preset superfast test.mp4
分辨率 | bitrate | 幀率 | FC 轉(zhuǎn)碼耗費時間 | FC 轉(zhuǎn)碼費用 | 騰訊云視頻處理費用 | 成本下降百分比 |
---|---|---|---|---|---|---|
標清 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% |
成本下降百分比 = (騰訊云視頻處理費用 - FC 轉(zhuǎn)碼費用)/ 騰訊云視頻處理費用
騰訊云視頻處理,計費使用普通轉(zhuǎn)碼,轉(zhuǎn)碼時長不足一分鐘,按照一分鐘計算,這里計費采用的是 2 min,即使采用 1.5 min 計算, 成本下降百分比也在 80% 左右
免費開通函數(shù)計算,按量付費,函數(shù)計算有很大的免費額度。
免費開通函數(shù)工作流,按量付費,函數(shù)工作流有很大的免費額度。
免費開通文件存儲服務(wù)NAS, 按量付費
詳情見各自示例工程的 README
基于函數(shù)計算 FC 和函數(shù)工作流 FnF 的彈性高可用視頻處理系統(tǒng)天然繼承了這兩個產(chǎn)品的優(yōu)點:
最后一一回答一下之前列出的問題:
Q1: 您已經(jīng)在虛擬機/容器平臺上基于 FFmpeg 部署了一套視頻處理服務(wù),能否在此基礎(chǔ)上讓它更彈性,更高的可用性?
A: 如工程示例所示,在虛擬機/容器平臺上基于 FFmpeg 的服務(wù)可以輕松切換到函數(shù)計算, FFmpeg 相關(guān)命令可以直接移值到函數(shù)計算,改造成本較低, 同時天然繼承了函數(shù)計算彈性高可用性特性。
Q2:您的需求只是簡單的轉(zhuǎn)碼需求,或是一些極其輕量的需求,比如獲取 OSS 上視頻前幾幀的 GIF 等。 自己搭建成本更低。
A: 函數(shù)計算天生就是解決這些自定義問題, 你的代碼你做主, 代碼中快速執(zhí)行幾個 FFmpeg 的命令即可完成需求。<br />典型示例: fc-oss-ffmpeg
Q3: 您有更高級的自定義處理需求,比如視頻轉(zhuǎn)碼完成后, 需要記錄轉(zhuǎn)碼詳情到數(shù)據(jù)庫, 或者在轉(zhuǎn)碼完成后, 自動將熱度很高的視頻預(yù)熱到 CDN 上, 從而緩解源站壓力。
A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計算 + 函數(shù)工作流方案),after-process 中可以做一些自定義的操作, 您還可以基于此流程再做一些額外處理等, 比如:
Q4: 您有并發(fā)同時處理大量視頻的需求。
A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計算 + 函數(shù)工作流方案), 當(dāng)有多個文件同時上傳到 OSS, 函數(shù)計算會自動伸縮, 并行處理多個文件。詳情可以參考 全功能視頻處理系統(tǒng) (FnF + FC) 壓測
Q5: 自定義視頻處理流程中可能會有多種操作組合, 比如轉(zhuǎn)碼、加水印和生成視頻首頁 GIF,后續(xù)為視頻處理系統(tǒng)增加新需求,比如調(diào)整轉(zhuǎn)碼參數(shù),希望新功能發(fā)布上線對在線服務(wù)無影響。
A: 詳情見全功能視頻處理系統(tǒng)(函數(shù)計算 + 函數(shù)工作流方案), FnF 只負責(zé)編排調(diào)用函數(shù), 因此只需要更新相應(yīng)的處理函數(shù)即可,同時函數(shù)有 version 和 alias 功能, 更好地控制灰度上線, 函數(shù)計算版本管理
Q6: 您的視頻源文件存放在 NAS 或者 ECS 云盤上,自建服務(wù)可以直接讀取源文件處理,而不需要將他們再遷移到 OSS 上。
A: 函數(shù)計算可以掛載 NAS, 直接對 NAS 中的文件進行處理
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢、云原生大規(guī)模的落地實踐,做最懂云原生開發(fā)者的技術(shù)圈?!?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。