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

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

[挑戰]

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 服務,提供使用者一個低延遲的觀看體驗.
步驟概覽

Column 1

Column 2

步驟一

利用 CloudFormation 部署架構

步驟二

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

步驟三

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

步驟一、利用 CloudFormation 部署架構

1.1

1.2

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

1.3

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

1.4

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

1.5

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

1.6

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

1.7

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

1.8

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

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

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

2.1

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

2.2

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

2.3

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

2.4

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

2.5

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

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

3.1

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

3.2

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

3.3

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

3.4

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

3.5

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

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 官方頁面.

[參考資料]

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

 免費註冊 AWS 帳號

新戶註冊即享 AWS 免費方案,可探索超過 100 種 AWS 的產品與服務,還能加碼領取獨家贈品!

 與我們聯絡

若欲尋求技術、帳單帳戶、登入存取支援,或希望與 AWS 的雲端業務聯絡,都竭誠歡迎您與我們聯繫!

 探索台灣資源中心

集結研討會精采回顧雲端主題白皮書開始上雲系列等免費資源,進一步豐富您的雲端之旅。