Video Streaming Architecture

Posted by Joe's Notes on Tuesday, December 31, 2019

TOC

影片需求

整個流程主要分成四段

  1. 上傳
  2. 轉檔
  3. 儲存
  4. 色情辨識

儲存與色情辨識比較沒有什麼問題,要嘛把須辨識的檔案存到S3要嘛存到EFS後非同步的辨識影片內容。接下來討論前兩個階段的方案。

上傳影片方案

上傳到系統分主要有三種方式

  • Solution 1: 透過API取得S3 signed URL網址後客戶端將影片上傳到S3, 而這個API可以是API Gateway+Lambda or 自己的API伺服器。 signed-url-upload-flow
  • Solution 2: 客戶端直接將影片透過API上傳到後端
  • Solution 3: 在API gateway開一個API然後傳送到Lambda處理
比較項目 S3 sign URL 直接上傳 API Gateway+Lambda
頻寬損耗 S3頻寬大,不消耗自有系統頻寬 佔用API伺服器頻寬 不佔用API頻寬但Lambda頻寬不確定
運算負擔 幾乎沒有消耗 消耗API伺服器運算 完全不消耗API伺服器運算
維護成本 小(S3資料傳入頻寬免費, 每次上傳$0.0000051) 小量無須新增伺服器 稍高
開發成本 不可行
擴充性 適用任何Scale需求 須隨使用量調整 不可行
限制 上傳完成後須再額外通知後台,共需3次API呼叫 伺服器須隨使用量調整 API 上傳上限10MB

處理轉檔方案

轉檔可以使用AWS的解決方案或者是自己處理。

  • Solution 1: Amazon Elastic Transcoder
  • Solution 2: AWS Elemental MediaConvert
  • Solution 3: AWS Lambda
  • Solution 4: 使用FFMPEG建立自己的轉檔服務,API與轉檔服務間使用EFS共享檔案
比較項目 Amazon Elastic Transcoder AWS Elemental MediaConvert Lambda 自己建立轉檔服務
頻寬損耗 不佔用API伺服器頻寬 佔用API伺服器頻寬 不佔用API頻寬但Lambda頻寬不確定 EC2<->EFS佔用伺服器頻寬
運算負擔 不消耗伺服器運算資源 不消耗伺服器運算資源 不消耗伺服器運算資源 消耗伺服器運算資源
開發成本 中低 中低
維護成本 每分鐘影片$ 0.015 每分鐘影片$0.0094 一個影片大約$0.0000833 目前無額外花費
擴充性 適用任何Scale需求 適用任何Scale需求 qps< 1,000
run time < 900s
/tmp < 512M
須隨使用量調整
限制 轉檔參數有限制 轉檔參數有限制 轉檔參數無限制 轉檔參數無限制

最終方案

解決方案通常沒有最佳解,只有最適合當下的方案。最終的方案考量 使用量開發成本維護成本未來擴充性決定。整個流程如下: Video_Story_Flow

「您的支持是創作的原動力」

Joe's Notes

您的支持是創作的原動力

使用Wechat(微信))掃描QR Code贊助我吧!


comments powered by Disqus