如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统
不久之前,微軟公司宣布了 Microsoft Azure Media Services 實時直播服務 ( Live ) 開始進入技術預覽階段,公開接受用戶測試。 而這些實時直播服務其實早已被 NBC 運動頻道用于多項重大運動賽事直播,包括英超聯賽、NHL、周日橄欖球之夜 ( Sunday Night Football ) 以及 2014 年索契冬季奧運會。 在最近剛結束的 2014 世界杯足球賽期間,Azure Media Services 實時媒體服務同樣的也被10 家世界性的電視傳播公司用來轉播比賽。 也因此,我們對于這項服務的穩定性、可擴充性以及性能都深具信心,也很高興可以讓所有用戶都可嘗試提供實時直播服務給他們的用戶。
自本周起 Azure Media Services 團隊將撰寫多篇文章,內容涵蓋了 Microsoft Azure 實時串流服務的功能以及如何使用它們。 首先,我們會介紹一些基本的實時串流所需要的一些要件,并且將其應用到一個特定的場景 (網絡直播桌面)。 而我們只需要透過 Azure 的管理入口網站,無需任何的程序代碼即可達到所需要的設定。 但是在未來的幾天,將會有另外一篇文章說明如何使用 Microsoft Azure SDK 以程控的方式來達到相同的設定。
直播流媒體的基本組成
首先我將簡要介紹端到端解決方案的基本組成元素,并在下文的說明部分中將這些元素整合在一起。
-
Azure帳戶和訂閱?-如果您還沒有?Microsoft Azure帳戶,您需要先到http://www.windowsazure.cn/上新建一個,您可在購買前免費試用一段時間。
-
Azure媒體服務帳戶?-如果您還沒有創建媒體服務帳戶,可參考http://www.windowsazure.cn/home/features/media-services/?上的說明新建一個帳戶
-
攝像機?-本文中我將使用我的筆記本電腦上的網絡攝像頭,當然您也可以采用其他任何攝像機。如果您的攝像機有?USB?等數字輸出功能,可直接將其連接到您的?PC,如果沒有,您還需要一個視頻采集卡來將攝像內容傳入至?PC。
-
實時編碼器?-目前?Azure媒體服務支持分段式?MP4/Smooth Streaming和?RTMP這兩種實時輸入協議。RTMP的使用現已相當普遍,因此有廣泛的編碼器軟件可選,包括免費編碼器(如?Flash Media Encoder?或FFMPEG)、平價編碼器(如?Wirecast)、高產值產品(如?NewTek的?Tricaster)以及Cisco、Elemental、Image等提供的專業級編碼器。在以下示例中,我將使用?Telestream的?Wirecast作為示范。如果您還沒有安裝編碼器,可以從?Telestream的網站下載?Wirecast?試用版。需要注意的是,視頻編碼需要占用相當大的?CPU資源,因此我在筆記本電腦上示范編碼時,將編碼限制為三種質量等級,并使用相對較低的碼率。如果您使用的筆記本電腦或其他?PC?的?CPU運算能力較低,您應時刻監視?CPU的使用率,若一直高于?70%,則應在編碼配置文件中刪除一個質量等級或降低碼率和分辨率。
-
高速?Internet連接?-要提供直播視頻服務,您需要有?Internet連接,且連接須具備相當穩定的出站速度,至少要達到傳輸視頻碼率的?1.5倍,以彌補編碼器輸出時碼率的波動。舉例來說,在以下解決方案中,我將使用三種質量級別(呈現形式)的直播流,分別是?400、600和?900 Kbps,合計碼率?1900Kbps,因此我需要至少2850Kbps (2.85Mbps)的出站速度。
-
Azure媒體服務通道?-通道是?Azure媒體服務中唯一新增的概念,用來實現直播流媒體。通道作為?Azure媒體服務的一部分,為編碼器的輸出提供一個傳入點。
-
Azure媒體服務資源?-媒體服務中的資源是存儲所有與流媒體有關的音頻、視頻和元數據的容器。
-
Azure媒體服務程序-程序是?Azure媒體服務中的一個實體,在通道上創建,以便開始將在此通道上收到的流媒體寫入資源中。
-
Azure媒體服務流媒體定位器?-如果您想要讓資源可以開始存取流媒體,需要在資源上創建一個定位器。
-
Azure媒體服務流媒體端點和流媒體單元?-流媒體端點為您提供一個URL,可從中找到您的直播和?VOD資源,同時還提供動態打包功能,并確保流媒體的成功傳輸。配置于流媒體端點的流媒體單元為端點提供最大輸出量保證。每個流媒體單元提供?200Mbps?的流媒體輸出容量,您也可以根據需要在您的流媒體端點增加更多單元,以提高其容量。
-
Azure CDN -在不久的將來,我們將直接集成?Azure CDN和?Azure媒體服務。集成完之后,流媒體端點將會有一個新設置,可允許您指定是否希望自動配置連接至您的流媒體端點的?CDN?端點;與此同時,您可以直接通過您的流媒體端點進行流處理,或者通過?Azure支持部分聯系我們,讓我們為您的流媒體端點設置?Azure CDN。
-
視頻播放器?-?Azure?媒體服務流媒體端點提供動態打包功能,使您可以使用您想訪問的每種設備所需的流媒體協議輸出實時流。在下面示范的解決方案中,我將針對除?iOS?外的所有平臺(桌面瀏覽器、Android和Windows Phone)使用遵循?MPEG-DASH標準的?HTML5/DASH.js播放器,針對?iOS平臺使用?HLS版本?3播放器。有關我們的動態打包功能的更多信息,請參考Nick的?Channel9視頻以及我們的MSDN文檔。
示例場景:網絡直播事件
現在我們先稍微解釋一下我們下面將實施的場景。在以下步驟中,我們將構建一個進行桌面網絡直播的解決方案,可用以播放來自我的?PC網絡攝像頭的培訓內容。此項網絡直播在直播流媒體專業術語中稱為一個“事件”,即一個擁有開始時間和結束時間的實時流,這與始終處于開啟狀態的電視頻道等無限期運行的“線性”流媒體有所區別。我們將在以后的博客文章中介紹如何將我們的直播服務運用到線性流媒體中。
事前設置
在運行事件之前,我們需要采取以下步驟進行事前設置。這些步驟可以在事件開始前任何時間進行,以實現全面妥當配置,不需要趕在“開始直播”前才進行。
創建?Azure媒體服務通道和流媒體端點
在第一組設置步驟中,我們將使用?Azure管理門戶配置基礎結構,以接收來自編碼器的實時流,并對其進行流處理和打包以傳輸至所有客戶端的播放設備。
1.??導航至https://manage.windowsazure.cn/打開?Azure?管理門戶,然后單擊頂部菜單欄中的“Portal”(門戶)。使用您的微軟?ID?登錄,便會進入到管理門戶。
2. 在左側的垂直菜單條中,單擊“MEDIASERVICES”(媒體服務)菜單項。您將可以看到您已創建的所有媒體服務帳戶清單在右側打開。
3. 單擊您在本例中希望使用的媒體服務帳戶,我在這里使用的是名為“jasonblog”的媒體服務帳戶。現在您將能夠看到有關該媒體服務帳戶的所有詳細信息,包括可用以創建和控制所有媒體服務實體類型的頂部菜單欄。如果您已經使用媒體服務一段時間的話,您將會注意到,目前在頂部菜單欄中新增了“CHANNELS”(通道)菜單項,所標志的狀態為預覽,其中包含對?Azure?媒體服務通道的所有管理和控制功能。
4. 單擊頂部菜單欄中的“CHANNELS”(通道),將會列出您的帳戶中的所有通道(如有)。
5. 如果您還沒有建立任何通道,則會顯示消息“Youhave no channels.? Add one to get started!”(您沒有任何通道,請添加一個以開始使用!)。單擊此消息下方的“ADD NEW CHANNEL”(新增通道),此時將打開一個對話框,您可以在其中設置通道的屬性。
6. 在“Createa new Live Channel”(創建新的直播通道)對話框中,輸入您的通道名稱。本例中,我使用的名稱為“webcast”。接下來指定您將使用的輸入協議,本例中我將使用輸出RTMP的Wirecast,因此將保留設置為默認狀態。最底下有三個復選框:1)“Start the new channel now”(立即啟動新通道)復選框。選中此復選框之后,您將不需要再執行額外操作來啟動此通道。2)“Add one streaming unit”(添加一個流媒體單元)。如果您的“默認”流媒體端點尚未配置有任何流媒體單元,則將自動預設為選中。如果尚未配置流媒體單元,請保留選中狀態,我們將自動為您配置一個流媒體單元,同樣也可以為您省去后期再進行設置的麻煩。3)“Restrict video ingest to my computer’s current IP address”(將視頻輸入限制為我的計算機當前的?IP地址)。如果選中此復選框,則會針對您的通道應用一個?IP訪問控制列表(ACL),將通道鎖定為僅接受來自您的計算機的輸入。本例中我們取消選中此復選框。以下是我的設置的屏幕截圖。
7. 單擊“Createa new Live Channel”(創建新的直播通道)對話框右下角的對勾按鈕,將會創建并啟動一個新通道,并將一個新的流媒體單元添加至您的“默認”流媒體端點中。您現在可以在屏幕底部看到創建及啟動新通道的狀態條。完成這些步驟大概需要花費幾分鐘時間。
配置并啟動編碼器
Cenk Dingiloglu已在其博客中發表重點介紹編碼器配置的文章。我下面采取的步驟仍然有效,但若要獲取更多詳細信息,請參閱http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/
現在我們已經擁有了媒體服務中所需要的基礎結構,下一步是設置?Wirecast,并將流媒體推送至我們的通道中。Telestream正在開發針對?Azure?媒體服務集成的功能,從而可減少所需步驟,不過由于此選項尚未廣泛應用,我還是會演示所有手動步驟。為加快設置的速度,我將使用先前已經創建好的?Wirecast?文檔,其中提供了您所需的大多數設置。本文中將不會介紹此文檔的創建細節,晚些時候,Cenk Dingiloglu將發表另一篇博文,介紹有關編碼器的更多詳情。
1.???從http://jasonsueblog.blob.core.windows.net/wirecastdocument/WirecastDocument.wcst下載我的Wirecast文檔
2. 啟動Wirecast并打開剛剛下載的文檔。您很可能會遇到和下圖一樣的錯誤,即Wirecast找不到文檔中所述的媒體。出現此錯誤的原因是,您沒有使用我在設置時使用的攝像設備,這里我們先單擊“Cancel”(取消),接下來我們會解決這一問題。
3.?我們可以在Wirecast的用戶界面中添加攝像來源。在用戶界面的底部有三排源,將鼠標懸停在第一排中的“+”上,然后單擊攝像機圖標。此時會顯示當前連接至您的?PC的攝像機列表,選擇您所需要的攝像機。完成后,您就可以在第一排中看到新的攝像源以及來自此攝像機的實時視頻源。
4. 現在,單擊Wirecast中的“Output”(輸出)菜單,選擇“OutputSettings”(輸出設置)。由于您使用的是我創建的文檔,現在您應該能看到如下對話框,顯示有三種流媒體編碼的質量級別,分別是400、600和900Kbps。其中,400Kbps的質量等級使用H.264基本配置文件進行編碼,用以支持較舊的Android設備,而600和900Kbps的質量級別則是使用主配置文件進行編碼,可提供更高的質量等級。在對話框中唯一缺少的是推送流媒體到達的目標“Address”(地址),我們稍后會進行填寫。
5.?回到Azure管理門戶,在通道清單中找到您的通道。將鼠標懸停在“INGESTURL”(輸入URL)列上,單擊右側的復制圖標,將通道的輸入URL復制到剪貼板中。
6. 回到?Wirecast和“Output Settings”(輸出設置)對話框,將剛才復制的通道輸入?URL?粘貼至“Address”(地址)文本框中。您需要對要編碼的全部三種質量等級重復此操作。也就是說,要確保單擊對話框左側的每個“RTMP Flash Server”,為每一個都設置該地址。
7. 單擊“Output Settings”(輸出設置)對話框上的“OK”(確定)按鈕。
8. 單擊您在步驟?3?中創建的攝像源,可將其移動至用戶界面的“Preview”(預覽)部分。
9. 接下來單擊“—>”按鈕,將“Preview”(預覽)的畫面移動至“Live”(直播)之上,此時您應該可以在用戶界面頂部的兩個位置看到您的攝像來源。
10. 現在您已經完成了所有Wirecast配置,剩下的唯一步驟就是點擊Wirecast用戶界面左上角的“Stream”(啟動流)按鈕,將流媒體推送至您的Azure媒體服務通道。如果一切順利的話,您可以在按鈕中看到一個紅點,顯示您目前正在進行直播。
?
11.現在您可以在通道預覽發布點直接查看所收到的流媒體,來檢查流媒體是否已正確傳送至通道中。回到Azure管理門戶,單擊底部命令條中的“PLAY”(播放)命令。此時將顯示子命令列表,單擊“PlayPreview URL”(播放預覽URL),此操作可在門戶中打開一個視頻播放器,并將其連接到您的通道上的預覽URL。
注意:如果有任何原因需要停止并重啟編碼器,您應當首先通過?Azure?管理門戶中的“RESET”(重置)命令來重置通道。
啟動事件并播放流媒體
我們已經將流媒體傳輸至通道中,現在即可啟動我們的事件,方法是通過創建資源、程序和流媒體定位器來歸檔流媒體,讓觀眾通過流媒體端點觀看直播。我們將借助門戶中的一個快捷鍵一步完成所有這些操作。
創建和啟動程序
1.????回到?Azure管理門戶,并進入到“CHANNELS”(通道)部分。如果您的帳戶中有多個通道,請確保已勾選您在上述步驟中設置的通道(用藍色突出顯示)。在頁面底部的命令條中,單擊“START STREAMING”(啟動流媒體),然后在出現的請求確認信息中單擊“YES”(是)。命令完成后,“PUBLISH URL”(發布?URL)列將顯示一個URL,您可以用它從您的流媒體端點上獲取您的流媒體。
播放直播流媒體
現在直播流媒體已經推送至資源中,便可以將資源從流媒體端點中拉出,并將其動態打包為所有我們目前支持的協議(MPEG-DASH、HLS版本?3、HLS版本?4、HDS和?Smooth Streaming)形式。我們將充分利用這些功能,使直播流媒體可以在桌面瀏覽器(通過使用名為Smooth的?Flash?控件)以及?iOS?和?Android設備(通過?HLS版本?3)上播放。
1.????在?Azure管理門戶中,將鼠標懸停在您的通道的“PUBLISH URL”(發布?URL)上,單擊復制按鈕,將?URL復制到剪貼板中。
2.????將發布?URL粘貼至您最喜愛的文本編輯器中,類似于“http://<帳戶名稱>.origin.mediaservices.windows.net/<locator_guid>/<stream_guid>.ism/manifest”,即?Smooth Streaming URL。再粘貼一次,并添加“(format=mpd-time-csf)”,這將告訴流媒體端點將流媒體打包為?MPEG-DASH?格式。然后再次粘貼,并添加“(format=m3u8-aapl-v3)”,這將告訴流媒體端點將流媒體打包為?HLS?版本?3格式。
3. 在Windows PC?或Mac上(您需要支持媒體源擴展的瀏覽器,例如最新版本的Internet Explorer?或Chrome),導航至http://aka.ms/dashplayer。這是我創建的一個樣本?DASH.js?視頻播放器,您可以用來測試您的流媒體。將DASH URL?粘貼至頂部的文本框中,然后單擊“Load”(加載)。您可以在Android設備和Windows Phone?上重復此項操作。
注意:我的樣本?DASH播放器也可以將?DASH URL作為?URL上的查詢參數。換句話說,您可以創建一個類似以下示例的?URL,并將其分配至不同設備:http://dashplayer.azurewebsites.net/?URL=http://<jason的帳戶>.origin.mediaservices.windows.net/../…ism/manifest(format=mpd-time-csf)
4.????在?iOS設備上,打開?Safari瀏覽器,在地址欄中輸入?HLS版本?3格式的?URL,就可以直接通過手機播放器播放流媒體。您也可以創建一個帶有video標簽的?HTML5?頁面,并賦予其?HLS URL作為視頻的來源,或者建立一個本地應用程序,來達到同樣的效果。
結束事件
要結束事件,您需要停止程序,使其停止將流媒體推送至資源中。此操作為簡單的一步式操作。
回到Azure管理門戶,選擇您所使用的通道,然后單擊底部命令條中的“STOPSTREAMING”(停止流媒體)命令,并在出現的請求確認信息中單擊“YES”(是)。此操作將會阻止程序在通道中運行并會將其刪除。
我們的直播服務的一項重要功能就是,我們的資源可以實現從直播到點播的無縫/即時轉換。如果您現在再次通過您的視頻播放器播放剛才的流媒體,您會發現仍可以使用同樣的?URL?觀看到流媒體,只是現在變成了點播狀態,不再是直播。
清理通道
如果您希望啟動另一個事件,您可以將當前一切保持運行狀態。您需要做的就是按照上述步驟在通道上開啟一個新程序。但一切都結束后,您可以將上面配置的基礎結構部分或全部清除掉。
1.????首先是編碼器,點擊?Wirecast中的“Stream”(流媒體)按鈕,停止推送流媒體,之后便可以關閉應用程序。
2.????現在也可以關閉通道。在?Azure管理門戶網中,再次進入?Channel(通道)頁面,然后在底部命令條中單擊“STOP”(停止)命令。完成后,通道將處于“Stopped”(已停止)狀態,表明此通道不會再消耗任何資源,您可以使通道無限期處于這一狀態,這樣就不會產生任何費用。當您希望再次使用此通道時,您可以單擊“START”(啟動)命令,即可再次啟動此通道,并且擁有相同的輸入?URL,因此您無需重新配置您的編碼器。
3.????最后是流媒體端點方面。如果您想繼續以點播流媒體方式提供您的直播事件的歸檔,您需要使流媒體端點保持運行。但如果您不需要,則可以進入管理門戶的“STREAMING ENDPOINTS”(流媒體端點)選項卡,選擇您可能名為“default”(默認)的流媒體端點,然后單擊底部命令條中的“STOP”(停止)命令。
結論及下一步計劃
在上文中,我們介紹了使用?Azure?管理門戶對直播事件進行無需代碼的設置、執行和清除(如需要)所需要的步驟。未來幾天,我們將發表更多文章,介紹我們測試過的?RTMP?編碼器列表、如何設置此類編碼器、如何通過我們的?SDK設置和運行直播事件、如何確保直播流媒體的內容安全性以及如何運行線性流媒體等等。
結論以及下一步發展
在上面的文章內容中,我們已經透過 Azure 的管理頁面來進行設定、執行、移除一個實時的串流。 在未來的幾天,我們將會發表更多文章,內容涵蓋了如何對使用 RTMP 的編碼器進行設定、如何使用我們的 SDK 來執行現場活動 ( live event )、如何保護影片內容的安全性以及如何進行線性串流 ( linear streams )。
?
以上配置文件如果負責可以參考一下文章:
Azure Media Services RTMP Support and Live Encoders
https://azure.microsoft.com/zh-cn/blog/azure-media-services-rtmp-support-and-live-encoders/?
?
https://azure.microsoft.com/zh-cn/blog/getting-started-with-live-streaming-using-the-azure-management-portal/
https://blogs.technet.microsoft.com/azuretw/2014/09/16/microsoft-azure-media-services-live-streaming/
非常好的demo測試網站,說明
http://ampdemo.azureedge.net/?
MPEG-DASH Player?測試瀏覽器
http://dashplayer.azurewebsites.net/
測試網址:
http://amssamples.streaming.mediaservices.windows.net/91492735-c523-432b-ba01-faba6c2206a2/AzureMediaServicesPromo.ism/manifest(format=mpd-time-csf)
?
http://blog.csdn.net/azurechina/article/details/41728851
轉載于:https://www.cnblogs.com/zangdalei/p/5303947.html
總結
以上是生活随笔為你收集整理的如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Orchard架构介绍
- 下一篇: python安装win32com模块