Live Streaming on AWS (AWS 即時影音串流架構)

- 作者 -
Shanna Chang, Solutions Architect, AWS
Sam Tu, Business Development Manager, AWS

orange-bar

[挑戰]

AWS 利用多個 services 打造符合 OTT 的即時影音串流解決方案,透過 MediaLive 加上MediaPackage 建立高可用、穩定地即時觀看體驗.AWS MediaLive 以及 MediaPackage 皆可隨著工作量附載,彈性的擴張服務解決傳統即時影像接收的硬體限制。此解決方案利用 dual input 的方式作為 redundentAWS Elemental MediaPackage 也提供了像是 DRM Restart Rewind 等等的客製選項,供客戶彈性運用串流後的影音資料

[操作步驟]

此次的解決方案將會透過 CloudFormation 部署以下架構,包含一個 S3 bucket 存放 HLS source stream AWS MediaLive service HLS 進行壓縮再輸出兩個 adaptive bitrate (ABR) HTTP Live Streaming (HLS) streams AWS MediaPackage 會將 AWS MediaLive 輸出的 HLS 打包成三種格式 HLS, DASH, CMAF .最後透過   AWS CloudFront CDN 服務,提供使用者一個低延遲的觀看體驗.
Live Stream (3)
步驟概覽

Column 1

Column 2

步驟一

利用 CloudFormation 部署架構

步驟二

建置一個新的input並且附加到主要channel (Optional)

步驟三

利用OBS建置一個即時串流影像 (Optional)

步驟一、利用 CloudFormation 部署架構

1.1

點選下方連結:https://aws.amazon.com/tw/solutions/implementations/live-streaming-on-aws/#:~:text=Live%20Streaming%20on%20AWS%20architecture,(HLS)%20streams%20as%20output.

進入到主要畫面後,選擇右側的 [launch in the AWS Console] 選項.

 

Live Stream (4)

1.2

登入 Console 以後,畫面會進入到 CloudFormation 的創建 Stack 畫面.點選右下角的[Next]

Live Stream (7)

1.3

進入到下一頁 Specify Stack details 的畫面,將頁面滑動至底部點選[Next]

Live Stream (9)

1.4

進入到 Review LiveStreamingwithMediaStore 頁面,滑動至頁面底部,勾選 “I acknowledge that AWS ... ”.點選 [Create Stack]

Live Stream (10)

1.5

CloudFormation 主要畫面中,會顯示我們創建的 Stack 狀態為 “CREATE_IN_PROGRESS” .等待大約 5~10 分鐘的時間後,CloudFormation 創建完成,並且 Status 的狀態會顯示 “CREATE_COMPLETE”

Live Stream (12)

1.6

在創建完成的 CloudFormation 畫面上方,點選 [Resources] 這個分頁.在這個頁面中,我們可以看到利用 CloudFormation 創建出的資源.

Live Stream (14)

1.7

在創建完成的 CloudFormation 畫面上方,點選 [Outputs] 這個分頁.在這個頁面中,點選最下方 DemoConsole 連結,此為 demo 使用的 playback 網站

Live Stream (16)

1.8

demo 網站中,我們可以透過下方不同輸出格式的按鈕,瀏覽不同格式的輸出畫面.如果成功看到播放畫面,則本次架構部署完成

Live Stream (19)

步驟二、建置一個新的 input 並且附加到主要channel (Optional)

在前面的部署中,我們透過預先放在 S3 HLS 作為輸入來源,我們也可以將輸入來源改由透過 OBS 服務,觀看即時的影像,接下來的步驟會展示如何設定 OBS

2.1

MediaLive 頁面,點選 [Create Input] ,創建一個新的直播 Input

Live Stream (20)

2.2

創建完成後,在Cloud 9 介面按下 Open IDE 後,即可進入開發環境。
Game_08

2.3

選擇創建一個新的 Security Group,並且輸入自己電腦的 IP ,點選 [Create Input security group]

Live Stream (25)

2.4

Destination 欄位 key 輸入 live value 輸入 mystream ,點選 [create input]

Live Stream (27)

2.5

創建完成後點選創建好的 input,在 endpoint 底下複製 URL

Live Stream (28)

步驟三、利用 OBS 建置一個即時串流影像 (Optional)

3.1

 OBS Studio 官網下載 OBS ,打開 OBS 點選右下角的 setting

Live Stream (30)

3.2

在設定畫面點選左側 Stream Service 選擇 CustomServer 的欄位將剛剛複製 input 頁面中的 URL 貼到 server 欄位,stream key 填上 mystream

Live Stream (32)

3.3

OBS 其他頁面中,照著以下設定填寫

Live Stream (34)

3.4

mediaLive 畫面,點選 channel ,點選 edit channel

Live Stream (37)

3.5

Input 欄位點選 Add,增加我們剛剛新建的 input ,點選原本部署的 Input “LiveStreaming-livestream“,點選 [remove] ,接著點選 Channel 上方的 start 按鈕

Live Stream (38)

3.6

OBS 點選 start streaming ,並且打開剛剛的播放畫面,大約延遲30秒的時間便會開始播放

[常見問題]

Q1: 再搭配 OBS 的直撥方案時,為什麼我在 demo page 的影像畫面一直無法顯示?

A1: 如果畫面無法呈現時,可以檢查 Input security group 是否有設定正確

 

Q2: 創建 input 時,顯示已經到達 input security group 的限制,請問我要怎麼創建一個新的 input security group?

A2: 您可以到 AWS Elemental MediaLive input security group 的畫面去編輯 security group

 

Q3: 如果想搭配此直播 Solution 加上聊天室功能,有沒有推薦的聊天室Solution ?

A3: 本篇文章主要為 live streaming solution,如果有聊天室的需求可以尋求aws 其他服務,例如https://aws.amazon.com/blogs/mobile/building-a-serverless-real-time-chat-application-with-aws-appsync/

 

Q4: 目前 AWS 推出的直撥串流服務,除了MediaLive 還有 IVS,應該如何做選擇?

A4: AWS Elemental MediaLive IVS 的,支援格式不太一樣,舉例來說: AWS MediaLive 目前支援 HLS, RTP, RTPM, MP4, AWS Elemental media services... , IVS 目前支援 RTMPS, Max resolution 目前 MediaLive 支援 4K, IVS 支援 1080p, 詳情可以參考 IVS 官方頁面.

[參考資料]

想要了解更多此架構用到的服務,點選下方連結:

orange-bar

免費註冊AWS帳號

數百萬名客戶正使用 AWS 雲端解決方案建立提升彈性、可擴展性、安全性和可靠性的應用程式,歡迎探索各類免費方案在 AWS 上進行建置。

免費註冊>>

與我們聯絡

遇到問題?不管是架構設計、架構優化、效能提升等等,都竭誠歡迎你/妳聯絡 AWS 的雲端業務!

與專人線上對談

有任何新專案的想法,想要評估使用 AWS 服務,或目前在使用上需要原廠協助之處,都可以跟我們聊聊!

開啓對話>>