Microsoft Azure Media Services 即時編碼 (Live Encoding) 簡介


感謝北科大劉建昌同學協助翻譯微軟公司 Azure Media Services 主管 Anil Murching 於 2015/4/13 發表的文章 An introduction to Live Encoding with Azure Media Services ( http://azure.microsoft.com/blog/2015/04/13/an-introduction-to-live-encoding-with-azure-media-services/ ) ,目前本篇所介紹之內容尚未進入公開技術預覽階段,欲參與 Azure Media Services 即時編碼功能技術預覽的用戶請發信至 amslived@microsoft.com 申請。

自從去年我們發佈了 Microsoft Azure Media Services 即時直播服務 ( Live Streaming ) 之後,相當多的使用者已經透過這項兼具穩定性和高擴充性的服務來進行影音串流直播。您若有興趣可以參考之前撰寫的這篇文章,裡面有詳細的資訊,介紹如何使用 Azure 入口管理網站或是 .NET SDK 以 Microsoft Azure Media Services 來進行影音串流直播。

在過去為了要進行直播串流 ( Live Streaming ),您需要自行準備一個第三方的編碼器 ( Encoder ) 來產生多個不同畫質之 adaptive bitrate streaming 串流並發佈到 Azure Media Services 上。隨著 Azure Media Services 即時編碼 ( Live Encoding ) 功能進入技術預覽階段之後,您無須再耗費這麼多的傳輸頻寬,同時傳送多種畫質的影音片段,取而代之的是您能夠傳送一個最高畫質單一位元率 ( BitRate ) 串流到 Azure Media Service,而這個單一的串流可以在雲端編碼成各種畫質 adaptive bitrate streaming。之後您就能夠將這些內容以 MPEG-DASH、Microsoft Smooth Streaming、 Apple HLS、Adobe HDS 等通訊協定將影音串流直播至多種用戶端環境來播放。

在這篇文章中,我將介紹如何在 Microsoft Azure Media Services 下使用即時編碼 ( Live Encoding ) 相關功能,包含:

  • 餵入單一位元率之影片,透過即時編碼功能產生 adaptive bitrate streaming 多種畫質之編碼影片
  • 透過 RTP ( MPEG Transport Streams )、RTMP、Smooth Streaming 等協定擷取傳遞 ( ingest ) 即時串流
  • 控制插入廣告訊號到客戶端
  • 由即時串流影片餵入時,取得影片之縮圖預覽

 

何謂即時編碼 ( Live Encoding )

當您在轉播一個即時事件 ( Live Event ) 時,最希望達到的目標就是傳送高品質的視訊以及不管在任何的網路環境下,都能夠將畫面傳送任何使用者可能擁有之裝置上。解決品質和不同網路環境影片播放的最佳方法,就是透過 adaptive bitrate streaming,所謂 adaptive bitrate streaming 是透過檢測用戶端的頻寬狀況和 CPU 使用率,動態調整影音畫質的播放技術。而欲將串流傳送到支援不同協定的各種不同裝置上,則可以透過動態封裝 ( dynamic packaging ) 的技術重新封裝編碼後影片內容。

adaptive bitrate streaming 的運作原理是透過將視訊編碼成不同解析度 ( resolutions ) 和位元率的視訊串流,並且使它們保持同步的狀態。過去在轉播即時事件時,需要將處理即時視訊編碼時所造成的延遲 ( Latency ) 控制在可以接受的範圍。因此在硬體的需求,可能需要效能較好的 CPU,甚至必須採用編碼效率更高的 GPU 設備。此外若是您的服務需要建立多個影音串流,會需要更大的頻寬( bandwidth ) 來將這些串流送到 CDN,再透過這些 CDN 將影片內容廣播給世界各地的用戶。上述所說的所有事情,都意味著您在建立基礎建設時的成本會相當的昂貴。

在 Azure Media Services 提供的即時編碼 ( Live Encoding ) 服務是解決上述問題的雲端方案,運用這項新功能,您只需要將單一 ( 最高畫質 ) 的影音傳送到 Microsoft Azure 的資料中心,之後即時編碼服務會開始進行運算工作,並且將其編碼成多種畫質解析度之 adaptive bitrate stream。這意味著您只需要擁有一個良好的網路環境,並且在相機或是攝影裝置上備有一個編碼器,您就能夠轉播一個即時的事件,並且這項服務具備延展性 ( scalable ),也因此只需要負擔您使用時所產生的費用。

 

如何使用即時編碼 ( Live Encoding )

透過以下步驟來設置即時編碼,並且轉播即時事件。

1. 決定您要使用何種協定來將即時影片串流即時餵入 ( live feed ) Microsoft Azure Media Services ( 詳情請參考下文 )

2. 使用 Azure API 或是 Azure 入口網站建立一個即時的通道 ( Channel ),並且設定您的即時編碼

3. 設定本地編碼器 ( on-premises encoder ) 傳送一個單一且最高品質 ( high quality ) 的影片餵入 Microsoft Azure Media Services

4. 透過 Azure 入口網站來預覽輸出串流

5. 建立一個 Program 來管理您的轉播事件

注意: 在後續將有文章詳述上述步驟與設定方式。

 

支援的格式以及解編碼器 ( codecs )

即時編碼所支援的輸入協定有 : RTMP、RTP ( MPEG TS )、Smooth Streaming。您能夠傳送的視訊編碼格式是 MPEG-2 或是 H.264,而音訊則是 AAC-LC ( 最多7.1 聲道 )、 Dolby® Digital/AC-3 ( 最多7.1 聲道 )、 MPEG Audio ( 最多到立體聲 )。

即時編碼支援的色度抽樣 ( chroma subsampling ) 是從 4:2:2 到 4:2:0。而在輸出部分,即時編碼能將視訊編碼至 H.264 ( 最多逐行高達4:2:0 ) 而音訊則是立體聲或是單聲道 AAC ( LC, HE v1, HE v2 Profile )。若視訊饋送中有的話,即時編碼還支援 EIA/CEA-708 closed captions。為了發送廣告提示,即時編碼支援透過API呼叫的輸入資訊,若是輸入協定是RTP的話,則能夠支援 SCTE-35 SpliceInsert 以及 TimeSignal 指令。在輸出端我們的服務能夠送出 HLS Playlist Tags ( SCTE-67 )、 Smooth Streaming Sparse Tracks ( SCTE-35 ) 、HDS CueInfo Elements 等格式。

 

選擇嵌入協定 ( ingest protocol )

 

  • RTMP : 最常見的嵌入協定之一,它能夠透過內建編碼器的攝影器材或第三方廠商的編碼器 ( 例如 : Telestream Wirecast、Flash Media Live Encoder, Tricaster 等 ) 將影片餵入 ( input feed ) 透過一般網際網路傳送至微軟的 Azure 資料中心。
  • RTP : 許多專業媒體廠商像是 Elemental Technologies、Ericsson, Ateme、Envivio 等支援此協定,使用本地端的即時編碼器,並且透過專線網路做影片傳送 ( 例如 : Microsoft Azure ExpressRoute )
  • 使用 HTTP 的 Smooth Streaming : 通常用於專業媒體廠商 ( Elemental Technologies、Ericsson, Ateme、Envivio ) 之設備支援此協定,並透過一般網際網路將影片串流傳送至微軟的 Azure 資料中心。

 

使用 RTMP 的注意事項

當將一個即時影片透過 RTMP 協定傳送至 Azure Media Services 通道 ( Channel ) 中,有以下的限制 :

1. 視訊編碼為 H.264,解析度則可高達 1080p,而立體聲道編碼為 AAC-LC。

2. 音訊採樣率 ( Audio sampling rate ) 為 44.1kHZ。

3. 推薦的編碼模式為封閉的 GOP 和 CBR。

4. 所需傳送的網路頻寬 ( bandwidth ) 需要超過視訊與音訊位元率 ( bitrate ) 的總和。

 

使用 RTP 的注意事項

如果您計畫使用 RTP 協定來傳送即時串流至 Azure Media Services ,您需要注意網路連接的狀態需要如下所示 :

1. 具備高流量 ( High throughput ) 網路頻寬,頻寬位元率須高於輸入串流的 1.5倍。當您在進行轉播活動時,需要較高的頻寬來進行傳輸,因此可以選擇流量彈性較高的網路,藉此來降低成本。

2. 低延遲 ( Low latency ) 網路傳輸環境,需低於150毫秒。

3. 具備網路品質服務水準保證 ( SLA on QoS ) 與可用性 ( availability ) 之網路環境。

上述兩種作法在一線大型網路提供商皆可提供。符合條件之網路提供商列表

 

RTP 透過 Border Gateway Protocol  (BGP) 網路互連 ( peering ) 傳輸影片

您可以使用 RTP 通過公用網路以及 BGP 協定,讓您的資料中心與 Microsoft Azure 網路環境進行互連。在這種情況下,可由單一或多個網路提供商為影片直播提供高速 IP (HSIP) 之網路傳輸環境。影片資料傳輸透過公用網際網路時,而網路供應商之 IP Edge 可與Microsoft Azure 網路相互連接於一共同位置 (co-location)。而這些網路環境互聯相關資訊可以透過 PeeringDB 查詢得知。

網路供應商負責將影片資料傳送到 Microsoft Azure,亦可以訂定符合客戶需求之服務水準合約 (SLAs)。這個做法近來被使用在轉播 NBC 運動賽事和冬季索契奧運會,也有效的降低了網路的成本。

 

RTP 透過專用 ( dedicated ) 與私人 ( private ) 網路傳輸影片

您可以使用一般針對通用的資料傳輸用途所設計的專用/私人網路來傳輸影片,而非使用專為影片傳輸所設計的網路環境來傳送,通常這種情況都是由網路供應商套裝服務所提供,這種服務的優點在點對點影片傳送時能夠帶來管理與服務品質上的優勢。這種服務主要分成兩種類型 :

1. Microsoft Azure ExpressRoute 通過網路服務供應商 ( NSP ) 或是介接提供商 ( Exchange Provider )

例如 : Azure ExpressRoute + Level 3 Cloud Connect Solutions 或是 Azure ExpressRoute + Equinix Cloud Exchange

2. 由網路供應商管理影音之服務

例如 : Level 3 VYVX Solution

若您正在透過 RTP 發送一個及時饋送 ( Live feed ),在傳送中常見的編碼協議如下所示 :

  • 編碼 : H264/AAC
  • Container格式 : MPEG-2 TS
  • 網路協定 — 應用層 ( Application Layer ) : RTP
  • 網路協定 — 傳輸層 ( Transport Layer ) : UDP

 

發送廣告信號 ( signaling advertisements )

當您 Azure Media Service 的通道 ( Channel ) 已經啟用了即時編碼功能,您能夠透過一些組件來處理影片資料,並且進一步操控資料。在 Azure Media Service 的服務中,您可以透過通道來插入開拍板 ( Slates ) 和廣告訊號 ( Advertising signals ) 至欲輸出的 adaptive bitrate streaming 中。廣告訊號是一個時間同步 ( time-synchronized ) 的信號,您能夠將它內嵌到輸出串流,並且告知影片撥放器去執行特定的動作,例如在適當的時間點切換至廣告。您可以參考這篇部落格,裡面介紹了 SCTE-35 訊號機制。以下是您能夠在您轉播即時事件時可以控制之動作 (範例程式和 API 細節會在日後的文章有詳細介紹 )。

  • 讓您的觀眾在事件撥放前 ( PRE-EVENT ) 獲得一個 PRE-EVENT 圖像
  • 在事件撥放結束之後,獲得一個 POST-EVENT 圖像
  • 在您的事件撥放期間,發生錯誤時,得到一個 ERROR-EVENT 圖像 ( 例如 : 球場停電 )
  • 當中場廣告的時候出現一個 AD-BREAK 圖像。

 

得到一個即時輸輸入影片之縮圖瀏覽 ( thumbnail preview )

當即時編碼已經啟用,而且即時將影片餵入到 Azure Media Services 通道 ( Channel ) 之後,您可以藉由縮圖瀏覽來確認影片是否真的已經送達通道了,此縮圖功能 Azure Media Service 亦提供 API 可供開發人員呼叫。

總結

在這篇文章中,我們介紹了 Microsoft Azure Media Service 的即時編碼 ( Live Encoding ) 功能。在接下來的幾天,會有更多介紹關於如何使用 Azure 入口網站建立即時編碼、如何由本地端編碼器來將影片即時餵入 ( input live feed ) Azure Media Services 通道 ( Channel )、如何控制廣告訊號發送。若您還有其他關於即時編碼的問題,請透過此電子郵件信箱與我們聯繫 amslived@microsoft.com

Comments (0)

Skip to main content