• 如何使用 Microsoft Azure Media Services 進行現場直播 (Live Streaming)

    感謝北科大劉建昌同學翻譯 微軟公司 Azure Media Services 團隊主管  Jason Suess 於 2014 年 9 月 10 日所發表的文章 http://azure.microsoft.com/blog/2014/09/10/getting-started-with-live-streaming-using-the-azure-management-portal/

    louis_bebe_barron_greenwich_village_studio

    不久之前,微軟公司宣布了 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 的訂閱帳戶

    如果您還沒有微軟的 Azure 帳戶,您需要先到http://azure.com上建立一個新的Azure帳戶,並且在購買前,會有一段免費期可供試用。

    • Azure Media Services 媒體服務帳戶

    如果您還沒有創建 Azure 媒體服務帳戶,這裡有一些相關文件,說明如何建立一個 Azure 媒體服務帳戶http://azure.microsoft.com/en-us/documentation/articles/media-services-create-account/

    • 視訊攝影機

    在本篇文章中,將使用筆記型電腦上的網路攝影機,如果您要使用其它的攝影機,而您的攝影機有提供數位輸出,可直接透過 USB 將攝影機連接到 PC,並且透過軟體進行編碼。倘若您的攝影機沒有支援數位輸出,那您則需要一個視訊擷取卡 ( video capture card ) 將攝影訊號傳入至 PC。

    • 即時編碼器 (Live Encoder)

    目前 Azure Media Services 媒體服務支援兩種即時內嵌 ( live ingest ) 協定 :

    fragmented MP4/Smooth Streaming 和 RTMP (Real Time Message Protocol)。

    目前支援 RTMP 這項協定的編碼器軟體已經變得相當普遍,包括 :

    1. 免費的編碼器軟體 ( Flash Media Encoder 和 FFMPEG )

    2. 平價之商用編碼器軟體 ( Telestream 的 Wirecast )

    3. 生產高價值產品 ( NewTek 的 Tricaster )

    4. 專業級的編碼器 ( Cisco, Elemental, Image 等 )

    在本文範例中,會使用 Telestream 的 Wirecast 做為示範用的編碼器,如果您沒有此一編碼器軟體,可以從Telestream的網站去下載 Wirecast 試用版,它提供了一段免費試用期。需要注意的是,視訊編碼需要耗用相當大的 CPU 資源,因此當以下範例在做視訊編碼時,會限制只有三個編碼品質等級 ( quality level ),並且產生相對的降低位元速率 (bit rates),若您所使用的筆記型電腦或是 PC 其 CPU 運算能力較低,您需要去監視 CPU 的使用率,若一直高於 70% 的話,您需要考慮刪除一個品質等級或是降低位元率和降低影片解析度。

    • 高速的網路連接

    要提供視訊直播的服務,您需要連接一個高速的網路,而這個網路需要有相當穩定的傳出速度 ( 至少要為傳送視訊的位元速率的 1.5倍 )。考慮到編碼器輸出的位元速率會有波動,因此在本例中,我們建立了三種品質等級的串流 (400、600、900 Kbps),合計總位元速率為 1900 Kbps,因此最少需要 2850 Kbps (2.85 Mbps) 的網路傳出速率。

    • Azure Media Services Channel 媒體服務通道

    通道 ( Channel ) 是在 Azure 媒體服務中的功能,用來實現即時串流。通道在 Azure 媒體服務範圍內提供編碼器輸出一個內嵌點 ( ingest point )。

    • Azure Media Services Asset 媒體服務資產

    在媒體服務中資產 ( Asset ) 如同一個容器 (Container),用來儲存所有與您的串流有關連的音訊、視訊、中繼資料等。

    • Azure Media Services Program 媒體服務節目

    Azure Media Service Program 媒體服務節目是 Azure 媒體服務的運作實體,其運作的流程為,建立一個通道,並且開始將串流透過通道寫入資產 ( Assest ) 中。

    • Azure Media Services Streaming Locator 媒體服務串流定位器

    當您想要讓資產 ( Asset )可以開始存取流時,您需要在資產中建立一個定位器。

    • Azure Media Services Streaming Endpoint and Streaming Units 媒體服務串流端點與串流單位

    1. 串流端點 (Streaming Endpoint) 提供了一個URL,從中您可以得到您的即時串流或是 VOD (Video On Demand) 資產,同時,也提供了動態封裝功能以及安全的傳送串流。

    2. 串流單位 (Streaming Units) 保證了一定的最大輸出量提供給串流端點,每個串流單位提供了 200 Mbps 的串流流出產量,並且根據使用上的需求,可以增加更多的容量到您的串流端點。

    • Azure CDN

    在不久的將來,我們將直接整合 Azure CDN 和 Azure 媒體服務。完成之後,串流端點將可以有一個新的設定。那就是允許直接配置一個 Azure CDN 端點連接至您的串流端點。在尚未完成整合的此時,您可不使用 CDN 直接由串流端點作串流播放的動作,或是聯絡 Azure support 部門,商請微軟公司為您的串流端點設置 Azure CDN。

    • 視訊撥放器

    Azure 媒體服務的串流端點提供了動態封裝的功能,因此可用來針對多種不同用戶端所使用的通訊協定,提供不同的媒體串流格式 ,例如 : iOS 使用到 HTTP 即時資料流版本3格式 ( HLS version 3 ) 。在以下範例中,我們將使用一個遵循 動態與適應性媒體串流標準 (MPEG-DASH) 的 HTML/DASH.js 撥放器來支援多個平台的影片撥放 (電腦瀏覽器、Android、Windows Phone)。

    有關更多動態封裝的資訊,可以去 Channel9觀看 Nicks 的影片或是到 MSDN網站 查詢。

    實際範例 : 網路直播

    現在,讓我們來解釋一下本篇案例將可以達到何種效果。

    在以下的步驟中,我們將建立一個網路直播,用來撥放電腦視訊鏡頭所拍攝的事件。在直播串流的專有名詞中,我們可以把這項直播想像成一個”事件”(event)並且擁有一個開始的時間和結束的時間。這個觀念和我們平常在電視上看到的直播節目(線性串流Linear streaming)為一個對比,在之後的介紹文章中,我們也會介紹如何使用Azure媒體服務來達到線性串流。

    事前設定(Pre-Event Setup)

    在要進行直播的事件前,我們需要透過以下的步驟來做事前設定。

    注意 : 這些步驟可以在任何時間點進行,而不需要趕在開始直播前做設定。

    建立一個 Azure Media Services channel 媒體服務通道和串流端點

    在第一組設定步驟中,我們將使用Azure管理入口網站配置一些基礎建設,這些基礎建設將要用來接收來自編碼器(encoder)的直播串流還有來自客戶端的撥放設備所傳送的封包(packet)。

    1. 點擊連結到http://azure.com,然後在最上方的選單中點選”入口網站”(Portal),登入您的Azure訂閱帳戶,您將會進入到Azure的管理網站。

    clip_image002

    2. 在最左側的垂直選單中,選取”媒體服務” (MEDIA SERVICES),您將可以看到在 Azure 訂閱帳戶中的所有媒體服務。

    clip_image004

    3. 選取你要在哪個媒體服務中建立這項範例。

    在這篇文章中,將使用先前建立好的名為 barttest 的媒體服務。

    您可以在媒體服務裡面看到頂端的選單,這裡可以用來建立和控制所有媒體服務的細部設定。

    若您已經使用 Azure 媒體服務一段時間的話,您將會注意到,現在新增”通道”這項新功能,在這裡可以管理和控制 Azure 媒體服務的即時通道 ( Live Channel )。

    4. 選取最上方選單的”通道”選項,將會列出您在這個媒體服務中所建立的通道清單(如果您有建立的話)

    5. 若您還沒有建立任何的通道,則在下方會顯示”您沒有任何通道”,選取”新增通道”,將會打開一個對話寬,在這個對話框中設定您的通道屬性。

    clip_image006

    6. 在”建立新的即時通道”對話框中,輸入您的通道名稱。

    接下來要指定通道所使用的採集內嵌協定 (ingest protocol)。在本範例中,我所使用編碼器為 Wirecast,其輸出嵌入協定為RTMP。

    最底下有三個選項 :

    A. 立即啟動新通道” : 選取這個選項,之後您就不需要再做額外的動作去啟動這個通道。

    B. 加入一個資料流單位” : 這個選項在您的串流端點上沒有任何串流單位時,將會自動預設為選取。選取這個選項,Azure 將會自動提供一個串流單位給您,這樣您就不需要再去花時間做設定。

    C. 將影片內嵌限制為我電腦的目前IP位址” : 若選取這個選項的話,它會為您的通道申請一個 IP 存取控制清單 (IP access control list , ACL ),ACL 將會鎖定這個通道只能夠在您的電腦上作輸入的動作。在本範例中我們將此選項取消。

    clip_image008

    7. 點擊對話框右下角的確認按鈕,則Azure媒體服務就會開始建立一個新的通道,並且將一個新的串流單位加到您預設的串流端點中。

    您可以在螢幕的底部看到建立新通道的進度列,新增一個新的通道大概需要花上幾分鐘的時間。

    clip_image010

    配置和啟動編碼器 (Encoder)

    透過上面的事前設定,我們現在擁有了進行媒體服務時所需要的基礎建設。

    下一個步驟則是設置 Wirecast,並且在我們的 Azure 服務通道上啟動它。

    為了加快設定的步驟,我們使用先前已經建立好的 Wirecast 配置文件,在這裡面已經設定好了即時轉播所需要的設定。但是在本文中將不會介紹這個文件的細節,在未來的幾個禮拜,另外一位作者 Cenk Dingiloglu  將會介紹更多關於編碼器的細節。

    1. 下載 Wirecast 配置文件 http://jasonsueblog.blob.core.windows.net/wirecastdocument/WirecastDocument.wcst

    2. 打開 Wirecast 和剛剛下載的配置文件。您很可能得到和下面圖示一樣的錯誤,那就是 Wirecast 找不到文件中所描述的媒體裝置。會顯示這項錯誤的原因是因為您並沒有使用與本文中相同的錄影設備。在這裡我們先點擊取消,在下一個步驟中我們將會解決這個問題。

    clip_image012

    3. 在 Wirecast 的用戶介面中,我們可以新增新的影像來源。

    在用戶端的底部有三排來源,點取”+”,並且選擇相機的圖示,此時會顯示目前連接電腦的錄影裝置,選取您要的錄影裝置之後,您就可以在錄影來源上看到目前攝影機的輸出畫面。

    clip_image014

    clip_image016

    clip_image018

    clip_image020

    4. 選取 Wirecast 的 ”Output” 清單,並且選擇 ”Output Setting”。

    您可以在對話框上看到,目前有三種串流編碼的品質等級 (400Kbp、600Kbp、900Kbps)。

    400Kbp 品質等級是使用 H.264 視訊編解碼標準中的 Baseline profile 編碼格式(H.264 Baseline profile),用來支援舊的 Andorid 播放設備,而 600Kbp 和 900Kbps 品質等級則是 Main profile編碼格式,用來提供高品質的視訊水準。

    在對話框中唯一缺少的則是目標串流位址(Address),我們在稍後會填寫上去。

    clip_image022

    clip_image024

    5. 回到Azure管理入口網站並且找到您的通道清單。

    在通道清單上選取內嵌 URL (INGEST URL),並且複製這段URL。

    clip_image026

    6. 再次回到 Wirecast 並且選取 ”Output Setting” 對話框,將剛才複製的內嵌 URL 貼到 ”Address” 框中,在這裡要確保三種品質等級的串流編碼都有進行此項動作。

    clip_image028

    7. 點擊”OK”按鈕。

    8. 點擊您在步驟三時所建立的錄影來源,並且讓它顯示在使用者介面上 ”Preview” 的位址

    clip_image030

    9. 接下來,點擊“—>”按鈕,將“Preview”的畫面移動到“Live”上,此時您在畫面上可以看到錄影的輸出

    clip_image032

    10. 完成以上的步驟,您已經完成了所有 Wirecast 的設定,剩下唯一的步驟就是要將您的串流”推”’到您的 Azure 媒體服務通道上。

    點選左上角 ”Stream” 按鈕,若一切順利的話,您將可以看到有一個紅點在按鈕中,讓您知道您目前正在進行直播。

    clip_image034

    11. 現在您可以檢查串流是否正確地從預覽的發送點傳送到通道中。

    回到Azure管理帳戶中,在底部的工具列選取”播放”按鈕。此時會有對話框出現,選擇”播放預覽URL”,這個動作將會打開一個視訊撥放器,並且將其連接到您通道上的預覽URL。

    clip_image036

    NOTE : 注意,若您有任何理由需要停止編碼器並且重新啟動的話,您首先需要在Azure管理帳戶上選取”重設通道”來重新調整您的通道設定。

    開啟事件 (Event) 和播放串流

    現在已經將視訊串流移動到通道之中,現在我們可以透過建立媒體服務資產(Asset)、媒體服務節目(Program)還有媒體服務串流定位器來開始我們的事件(Event),並且讓觀看者可以透過串流端點來觀看我們的直播。

    我們將使用一個快速的方法來達到以上的所有目標。

    建立和開啟節目

    1. 回到 Azure 管理帳戶,並且進入到通道的設定頁面裡,點擊頁面最下方工具列的”啟動資料流”,一旦完成這項步驟之後,通道列表上的”發行URL”將會被填入,您可以從上方的串流端點上拉進您的串流。

    clip_image038

    clip_image040

    播放直播串流

    現在,直播串流已經被存入資產中,資產是可以從串流端點中拉出的,並且可以動態的打包目前我們所支援的協定 ( MPEG-DASH,、HLS version 3、 HLS version 4、HDS、Smooth Streaming ),我們將充分利用這項功能讓直播串流可以在桌上電腦、iOS  和Android設備上播放

    1. 在 Azure 管理入口網站中,在通道列表的頁面,選取複製”發行URL”。

    2. 將"發行URL"將它貼到任何一個文字編輯器上

    它看起來像是

    “http://<您的帳號名稱>.origin.mediaservices.windows.net/<locator_guid>/<stream_guid>.ism/manifest”

    在這段URL上添加 (format=mpd-time-csf),這將告訴串流端點要把串流打包為 MPEG-DASH。若增加的是 (format=m3u8-aapl-v3)則是告訴串流端點將串流打包為 HLS (version3)。

    3. 在 Windows PC 或 MAC 上,(您需要一個瀏覽器可以支援擴充軟體資源,像是最新版本的 Internet Explorer 或 Chrome ),您可以透過http://aka.ms/dashplayer,用來測試您的串流。

    在頁面頂端貼上 DASH URL 並且選取 ”Load”。您可以在Android裝置或是Windows Phone重覆這項動作。

    NOTE : DASH 撥放器也可以用來把 DASH URL 當成查詢的參數,換句話說,您可以建構一個如以下範例的URL,並且分配到不同的裝置上

    http://dashplayer.azurewebsites.net/?URL=http://<您的帳號名稱>.origin.mediaservices.windows.net/../…ism/manifest(format=mpd-time-csf)

    4. 在 iOS 設備上,打開 Safari 瀏覽器,並且輸入 HLS ( version3 ) 的URL,就可以直接獲取本機播放器的串流,您也可以建立一個帶有視頻標籤的 HTML5 頁面,並且給予它一個 HLS 的 URL 作為其視訊的來源,來達到同樣的效果。

    停止事件

    當要結束一個事件時,您需要停止將串流傳入到資產中,這可以透過一個簡單的步驟來達成。

    回到 Azure 管理頁面,並且選擇您所使用的通道,在最底下的工具列中,選取"停止資料串流"。這個動作將會阻止節目在您的通道中運作並且會將其刪除。

    clip_image042

    我們的即���服務所擁有的功能之一,就是我們的資產在即時或是VOD狀態是無縫接軌的,如果您現在去連接先前的URL,您還是可以發現原先的串流還是存在,但是是VOD而不是即時的。

    清除通道

    若您想要在通道內運行其它的節目,您當然可以清除掉先前的串流。

    1. 第一,透過選取 Wirecast 上方的"Steam"按鈕,停止傳送串流,之後就可以關閉編碼器。

    2. 第二,回到Azure管理頁面,選取"通道",並且選取最下方工具列的"停止通道"。當通道狀態變為"已停止",則表示該通道並不會消耗任何的資源,當然這樣也不會有任何的費用產生。

    clip_image044

    clip_image046

    下次您要再次使用該通道時,您可以選取"啟動通道",此時該通道會再次的啟動,並且擁有相同的內嵌URL ( ingest URL ),這樣您就不需要重新設定您的編碼器了。

    3. 最後,關於串流端點,若您想要繼續提供 VOD 的紀錄,則您需要讓串流端點保持運作。但是若您不需要,則可以進入到"資料流端點"頁面中,在最底下選取"停止",則您的串流端點就不會再繼續運作。

    clip_image048

    結論以及下一步發展

    在上面的文章內容中,我們已經透過 Azure 的管理頁面來進行設定、執行、移除一個即時的串流。在未來的幾天,我們將會發表更多文章,內容涵蓋了如何對使用 RTMP 的編碼器進行設定、如何使用我們的 SDK 來執行現場活動 ( live event )、如何保護影片內容的安全性以及如何進行線性串流 ( linear streams )。

  • Azure BizTalk Services Hybrid Connections (技術預覽)

     

    感謝北科大劉建昌同學翻譯 微軟公司 Microsoft BizTalk 團隊主管  Harish Kumar Agarwal 於 2014 年 5 月 13 日所發表的文章 http://azure.microsoft.com/blog/2014/05/13/hybrid-connections-preview/

    hybrid connections

    混合連接服務 (Hybrid Connection)

    2014 年 5 月 Microsoft Azure 推出了一項新的技術預覽功能 : Azure BizTalk Services Hybrid Connections,使用 Hybrid Connections 服務可以輕易的在 Azure 上部屬一個混合式的應用程式。

    Hybrid Connections 服務是 Azure BizTalk Services 上的一項功能,用戶只需要在 Azure入口管理網站上操作,即可讓您的 Azure Website 或是行動服務可以穿透防火牆連接自己本地資料中心內的資料與服務。除此之外,為了讓您可以輕鬆的體驗這項新服務,Microsoft Azure 目前提供免費體驗 Azure BizTalk Services Hybrid Connections 的方案。

    Hybrid Connections 服務支援所有 Azure Websites 所支援的程式語言與框架( .NET, PHP, Java, Python, node.js )以及 Azure 行動服務所支援之後台程式語言 ( node.js, .NET ),也支援各種微軟公司或非微軟公司之企業軟體應用系統 (LOB application),包含許多使用特定通訊協定 ( protocols ) 之應用程式。使用 Hybrid Connections 服務時,不需要去改變網路周邊的設定 ( 不需要配置 VPN 或是新增特定之防火牆連接埠)。它提供了企業系統管理人員能夠管理與控制混合式應用程式所使用之內部資源。

    Hybrid Connections (Preview)

    透過 Hybrid Connections 服務,Azure Websites 和行動服務上的程式碼能夠如同在企業內部網路般存取本地端的資源。也因為如此,應用程式系統管理員可以簡單且靈活地,將面對外部用戶前端服務層輕易地移往 Microsoft Azure,延伸既有企業應用程式成為混合式的應用模式。

    使用 Hybrid Connections 服務來連接您的 Azure Websites 和本地端資源 :

    1. 從 Azure預覽入口網站 選取您的網站,並且在操作介面中選取 Azure BizTalk Services Hybrid Connections 並且點擊新增

    clip_image002

     

    2. 選擇一個現有的 Hybrid Connections 服務,或是創建一個新的 Hybrid Connections 服務

    clip_image004

    a. 輸入 Hybrid Connections 服務以及主機名稱,並且設定連接本地端資源的連接埠

    clip_image006

    b. 使用現有或是創建一個新的 Azure BizTalk Services Hybrid Connections 服務實例

    clip_image008

    3. 點擊 OK

    一旦連接創建好之後,其狀態將顯示為 "未連接" ( Not Connected )。若要完成連接建立,則須從任何本地端的 Windows Server 主機點擊連接

    clip_image010

    4. 選擇 Hybrid connection

    5. 點擊 Listener Setup

    clip_image012

    6. 在 Hybrid Connections 連接的屬性頁面,選擇 "Install and configure",這個動作要求您做 Hybrid Connections 服務的權限設置

    clip_image014

    7. 設定完權限之後即完成 Hybrid Connections 服務的設定。

    當 Hybrid Connections 服務的狀態顯示為 "已連接" ( Connected ),這就表示您的網站已經連接到本地端伺服器了。

    行動服務則可以透過 Azure入口網站 進行配置 Hybrid Connections 服務。

    1. 建立一個新的 BizTalk 服務,並且在 BizTalk 設定頁面上選取新增一個混合式連接 (Hybrid Connections)

    clip_image016

    2. 新增一個混合式連接

    clip_image018

    3. 選取您的行動服務,並且選擇混合式連線

    clip_image020

    4. 點擊新增混合連線,並且選擇與您的行動裝置建立連線的BizTalk服務以及混合連線

    clip_image022

    透過使用混合式連接,您現在可以在 Azure Website 或行動服務上使用相同的應用程式連接字串和 API。

    舉例來說,若您要連接到一個本地端的 SQL server (payrollSQL.corp.contoso.com)

    您在 Azure Website 或行動服務上可以使用相同的 SQL 連接字串 (“Data Source=payrollSQL.corp.contoso.com;Initial Catalog=payrollDB;User ID=<user>;Password=<password>”)

    若想要了解更多關於混合式連接的資訊,請參照以下英文技術資源 :

    · Overview: Hybrid Connections

    · How-To: Connect an Azure Website with an On-Premises Resource

    · Tutorial: Connect an Azure Website to an On-Premises SQL Server using Hybrid Connections

    · Tutorial: Connect an Azure Mobile Services .NET Backend to an On-Premises Resource using Hybrid Connections

  • Microsoft Azure Media Services 支援 RTMP 協定與即時編碼

    感謝北科大劉建昌同學翻譯微軟公司 Azure Media Services 團隊主管  Cenk Dingiloglu 於 2014 年 9 月 18 日所發表的文章 http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/

    Mixing board 

    Microsoft Azure Media Services 直播串流服務功能日前已經進入技術預覽階段,公開接受用戶測試。而在直播串流服務中所用到的RTMP 協定是 Microsoft Azure Media Services 支援的內嵌 ( ingest protocol ) 協定之一,也是目前市場上常用的協定,用來獲取與傳送多媒體資訊。

    Microsoft Azure Media Services 提供了使用 RTMP 協定來內嵌串流資訊並且使用動態封裝 (Dynamic Packaging) 來傳送不同的媒體串流格式 (例如 : MPEG-DASH、Microsoft Smooth Streaming、Apple HLS、Adobe HDS )。RTMP 協定目前被廣泛應用在影音輸入與傳輸,支援 RTMP 協定讓 Microsoft Azure Media Services 直播串流服務能夠將獲取的影片;多重輸出串流至不同媒體格式的裝置與端點上,並且能夠保持與傳統撥放器的相容性。

    關於在 Azure Media Service 上設定一個直播通道 ( Live Channel ) 和串流端點的資訊,請參考 Microsoft Azure 中文部落格 - 如何使用 Microsoft Azure Media Services 進行現場直播 ( Live Streaming )

    本篇文章的重點將放在介紹 Azure Media Service 的 RTMP 內嵌功能,以及如何透過 Wirecast、Flash Media Live Encoder ( FMLE )、FFmpeg 等編碼器,利用 RTMP 協定將多種畫質之多重位元資訊 ( multi-bitrate ) 即時送進 Azure Media Service 的通道中 ( Channel )。

    即時串流 ( Live Streaming ) 的基本資訊與架構

    即時串流的架構最主要由三個主要的元件所組成:通道/節目 ( Channel/Program )、串流端點與串流單位 ( Streaming Endpoints )、儲存體 ( Storage )

    Live-architecture

    1. 通道/節目( Channel/Program ) :

    • 通道 ( Channel ) 用來啟用直撥服務並且支援 RTMP 和 MP4 ( Smooth Streaming ) 兩種內嵌協定。即時編碼器 ( Live Encoder ) 透過內嵌點 ( ingest point ),將串流傳送到通道中。
    • 節目 ( Program ) 為通道內的一個邏輯組件,節目會發布收到的串流資訊並且將這些資訊歸檔,轉換成 VOD ( Video On Demand ) 或是即時撥放窗口。

    2. 串流端點 ( Streaming Endpoint ) 與串流單位 ( Streaming Units ):

    • 串流端點 ( Streaming Endpoint ) 提供了一個URL,從中您可以得到您的即時串流或是 VOD ( Video On Demand ) 資產,同時,也提供了動態封裝功能以及安全的傳送串流。

    3. 儲存體 ( Storage )

    • 節目 ( Program ) 利用 Azure Storage 來儲存即時檔案。而 VOD 和編碼器服務也需要使用到儲存的服務。

     

    通道 ( Channel ) 支援 RTMP 協定

    Azure Media Services Channel 支援 RTMP 協定將串流推向通道中,它可以支援單一 ( single bitrate ) 和多重位元輸入 ( multi-bitrates ),不過我們強烈建議使用多重位元輸入 ( multi-bitrates ) ,這樣的好處是可以讓不同單位可以使用自己最適合的串流位元。在未來的 Azure Media Services 中,將會提供即時轉碼服務,這個服務能夠將單一的位元 ( single bitrate ) 輸入轉換成多重位元輸出 ( multi-bitrates )。

    要使用 RTMP 嵌入協定 ( ingest ),需要符合下列要求 :

    • 備妥支援 RTMP 輸出的編碼器 (Encoder)
    • 支援能夠輸出 H.264 標準壓縮的影片以及進階音訊編碼 ( AAC ) 的音訊編碼器
    • 圖像組 (GOP) ( Group of pictures ) 或主要畫面格 ( Key Frame ) 與能夠搭配不同影片畫質
    • 主要畫面格的間隔需達2秒 (透過特殊的設定,您可以使用最多長達 6 秒的間隔時間。請參照本文之後介紹的進階設定 )
    • 不同的串流品質名稱都是唯一的
    • 網路連接 ( 頻寬需求量為視訊與音訊位元率的總和 )
    • 建議採用 CBR ( Constant bit rate ) 編碼以優化自動適應性 ( Adaptive ) 編碼效能

    在這篇文章中,將會使用三種不同的視訊輸出品質,並且內嵌 ( ingest ) 到 Azure Media Service Channel 之中。您可以使用更多的視訊輸出品質,但是要記住的是,您的輸出品質將被您的電腦編碼能力還有網路頻寬所限制,若您的網路頻寬較小,您可能會需要調整所使用的輸出品質數量,並且使用較低的編碼位元率 (bitrate)。當您嘗試輸出較多種視訊品質時,需要注意所需的網路頻寬是所有視訊品質的位元率總合。

    注意 : 當您重新設定編碼器或是重新建立編碼器與通道之間的連線時,都要對通道進行 "Reset" 的動作。

    使用 Wirecast 時的設定

    Wirecast 是一種支援 RTMP 協定的商用編碼器軟體。它可以即時編碼直播時所獲取的即時串流。您可以到 Telestream 網站下載 Wirecast 試用版並且得到相關的資訊,目前 Wirecast 最新版本為版本 5,並且能夠用來測試 Azure Media Service。

    輸入設定

    • 選取 "+" 按鈕。

    clip_image002

    • 選擇相機的圖示,此時會顯示目前連接電腦的攝影裝置,您可以在此選擇自己需要的攝影裝置。

    clip_image004

    • 選取完可用的攝影裝置後,您可以在錄影來源上看到目前攝影機的輸出畫面。點擊輸出畫面,並且讓它顯示在使用者介面上 ”Preview” 的位址

    clip_image006

    輸出設定

    • 在上方工具列選取"Output" ->"Output Setting"

    clip_image008

    • 在"Select an Output Destination"對話框中選擇目標伺服器,在此選擇RTMP Server

    clip_image010

    此時會出現輸出設定的對話框

    clip_image012

    • 為您第一個輸出品質 ( quality ) 等級作命名。本範例中取名為 "Azure Media Services Quality1"
    • 輸入一個唯一的串流名稱 ( myStream1 )。若您有多種不同的輸出品質,每一個輸出品質都需要有一個唯一的串流名稱
    • 為您第一個輸出品質建立一個新的預設編碼。
    • 在 "Output Setting dialog box" 中,選擇"New Preset",並且輸入新的預設編碼名稱 ( MyQuality1 )。

    clip_image014

    注意 :

    1. 當您在建立自己的預設編碼時,您必須保持 “Frames per second” 和 “Key frame every” 這兩個值在不同的輸出品質之間是相同的。

    2. 不同輸出品質,必須使用相同的音訊編碼設定並且確定有設置 "Keyframe Aligned",否則串流將無法運作或是無法內嵌置通道中。

    • 上述步驟結束後,您的輸出配置應該與下圖一樣

    clip_image016

    • 增加其他的輸出品質等級。點擊"Add",並且按照上述步驟來添加新的輸出品質

    clip_image018

    注意 :

    再次提醒,在建立新的預設編碼時,"Frames per second" 和 "Key frame every" 這兩個值在不同的輸出品質也要是一樣的。除此之外,也要確認有設置 "Keyframe Aligned" 並且為每個 Stream 命名一個唯一的名稱。

    • 下圖為 Wirecast 設定三種不同的輸出品質等級

    clip_image020

    開始編碼並且將串流資料內嵌到通道中

    • 接下來,點擊“->”按鈕,將“Preview”的畫面移動到“Live”上,此時您在畫面上可以看到錄影的輸出

    clip_image022

    • 點選左上角 ”Stream” 按鈕,您將可以看到有一個紅點在按鈕中,讓您知道您目前正在進行直播。

    clip_image024

    預覽串流

    您可以透過Azure管理網站來預覽甚至是發布您的串流。

    (關於預覽與發布串流的詳細資訊,請參考Microsoft Azure中文部落格如何使用 Microsoft Azure Media Services 進行現場直播 (Live Streaming))

    做為替代方案,您也可以使用http://amsplayer.azurewebsites.net/來選擇不同的播放器來預覽您的串流視訊。

    使用 Flash Media Live Encoder 時的設定

    FMLE 為 Adobe 公司發行的一個免費軟體。您可以至 http://www.adobe.com/products/flash-media-encoder.html 下載FMLE以及了解更多相關訊息。

    在預設的情況下,FMLE 支援 MP3 格式的音訊輸出。目前 Azure Media Service 並不提供即時轉碼服務,並且要求必須使用進階音訊編碼 ( AAC ) 以動態封裝串流到多種格式中 ( MPEG-DASH、Smooth Streaming、HLS )。因此,為了要在 Azure Media Service 上使用 Adobe FMLE,您會需使用額外的 ACC 插件 ( plugin ) 。在本篇文章中,我們將會使用一個由 Main Concept 所提供的 FMLE ACC 插件。(您可以從 http://www.mainconcept.com/eu/products/plug-ins/plug-ins-for-adobe/aac-encoder-fmle.html 下載與安裝此一 ACC 插件)

    設定 FMLE

    您需要做的第一件事情是設定讓 FMLE 使用 Network Time Protocol (NTP) 做為 RTMP 協定的時間標籤,請依照下列步驟 :

    1. 關閉您的編碼器

    2. 使用文字編輯器打開 FMLE 的組態檔 (config.xml)。

    1. 若您沒有更改預設的安裝路徑,則您可以在 C:\Program Files\Adobe\Flash Media Live Encoder 3.2\ 找到FMLE的組態檔。
    2. 若 Windows 作業系統為 x64 則是在 C:\Program Files (x86)\Adobe\Flash Media Live Encoder 3.2\ 找到FMLE的組態檔。
    3. 在 MAC OS 作業系統的預設安裝路徑為 HD:Applications:Adobe:Flash Media Live Encoder 3.2

    3. 將 streamsynchronization/enable 設定true,如以下範例 :

    <streamsynchronization>

    <!– “true” to enable this feature, “false” to disable.                

    <enable>true</enable>

    4. 儲存檔案,並且再次打開您的編碼器。

    • 在目前連接的設備清單中,選擇您要的攝影裝備。
    • 在編碼清單中選擇您要的預設編碼,或是自己建立一個預設編碼。

    若您要自己建立一個預設編碼,請參考本文 "通道支援 RTMP 協定" 章節。

    在本篇範例中,將使用

    "Multi Bitrate – 3 streams (1500) Kbps – H.264"

    此選項將採用H.264標準的多位元率編碼,並且輸出三種不同的輸出串流。

    clip_image026

    • 在視訊編碼格式的進階設定中,設定 "Key Frame frequency" 為2秒。

    clip_image028

    • 設定 "Frame rate" 為 30 fps。

    clip_image030

    • 選擇您的音訊輸入裝置。
    • 設定音訊輸出格式為 AAC

    ( 注意 : 在預設的狀況下 ACC 和 HE-AAC 不能使用,因為 FMLE 只能夠輸出 MP3 格式的音訊檔,因此您需要通過外部的插件來讓 FMLE 使用 AAC 編碼 )

    • 設定所需的音訊頻寬,在本篇範例中,將使用 96Kbps 的位元率和 44100 Hz 的取樣率。

    clip_image032

    • 在 Stream 欄位中輸入 "stream%i",這項設定可以讓 FMLE 將每一個輸出品質 ( Quality ) 命名為唯一的串流名稱

    clip_image034

    下圖為上述完成的設定 

    clip_image036

    開始編碼並且將串流資料內嵌到通道中

    • 點擊 "Connect",將編碼器連接到

    clip_image038

    • 選取 "start" 開始進行編碼

    注意 : 您也可以使用 FMLE 的指令模式完成上述的操作。

    詳細資料請參考Start Flash Media Live Encoder in command-line mode”

    clip_image040

    • 下圖為直播開始的畫面

    clip_image042

    預覽串流

    您可以透過 Azure 管理網站來預覽甚至是發布您的串流。關於預覽與發布串流的詳細資訊,請參考 Microsoft Azure中文部落格如何使用 Microsoft Azure Media Services 進行現場直播 ( Live Streaming )

    做為替代方案,您也可以使用 http://amsplayer.azurewebsites.net/ 來選擇不同的播放器來預覽您的串流視訊。

    在 Azure Media Services 上使用 FFmpeg 時的設定

    FFmpeg 是知名的開放原始碼計畫,可以支援多種格式的音訊和視訊輸出。RTMP 也是 FFmpeg 上所支援的一項協定。您可以在FFmpeg 的官網下載與了解更多相關資訊。在這篇文章中,將不會特別介紹和說明 FFmpeg 的指令和其用處,而是使用先前已經撰寫好的指令來將本地端的檔案進行串流,並且模擬一個即時串流。您可以使用 FFmpeg 來截取來自多種不同設備 (包含攝影機、桌面截取等設備) 的輸入的資訊。您可以在 FFmpeg 的官網下載與了解更多相關資訊。

    範例指令

    以下為 FFmpeg 的範例指令

    • 輸出單一位元率( Single Bitrate ) :

    C:\tools\ffmpeg\bin\ffmpeg.exe -v verbose -i MysampleVideo.mp4 -strict -2 -c:a aac -b:a 128k -ar 44100 -r 30 -g 60 -keyint_min 60 -b:v 400000 -c:v libx264 -preset medium -bufsize 400k -maxrate 400k -pix_fmt yuv420p -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/mystream1

    • 輸出多種位元率 ( Multi bitrates ) ( 500Kbps,300Kbps,150Kbps ):

    C:\tools\ffmpeg\bin\ffmpeg.exe -threads 15 -re -i MysampleVideo.mp4 -strict experimental -acodec aac -ab 128k -ac 2 -ar 44100 -vcodec libx264 -pix_fmt yuv420p -s svga -b:v 500k -minrate 500k -maxrate 500k -bufsize 500k  -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_500 -strict experimental -acodec aac -ab 128k -ac 2 -ar 44100 -vcodec libx264 -pix_fmt yuv420p  -s vga -b:v 300k -minrate 300k -maxrate 300k -bufsize 300k -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_300 -strict experimental -acodec aac -ab 128k -ac 2 -ar 44100 -vcodec libx264 -pix_fmt yuv420p -s qvga -b:v 150k -minrate 150k -maxrate 150k -bufsize 150k  -r 30 -g 60 -keyint_min 60 -sc_threshold 0 -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/Streams_150

    在輸出多種位元率的指令碼中,建立了三種不同的視訊輸出品質 ( 500Kbps, 300Kbps, 150Kbps ),主要畫面間隔為兩秒。並且在將串流輸出到 Azure Media Service 通道 ( Channel ) 中。請參考 Microsoft Azure中文部落格如何使用 Microsoft Azure Media Services 進行現場直播 ( Live Streaming ),裡面有關於通道內嵌URL的詳細介紹。

    • 若要使用電腦的 WebCam 以單一位元率( Single Bitrate ) 來進行直播,可以先鍵入

    C:\tools\ffmpeg\bin\ffmpeg.exe -list_devices true -f dshow -i dummy

    得知麥克風與攝影設備的名稱,以此範例,攝影設備名稱為 Integrated Camera 而麥克風設備名稱為 Microphone (High Definition Audio Device),以下是將電腦 WebCam 透過 ffmpeg 編碼為 H.264 送往 Azure Media Services Live Streaming Channel 的範例:

    C:\tools\ffmpeg\bin\ffmpeg.exe -v verbose -f dshow -i video="Integrated Camera":audio="Microphone (High Definition Audio Device)" -strict -2 -c:a aac -b:a 128k -ar 44100 -r 30 -g 60 -keyint_min 60 -b:v 400000 -c:v libx264 -preset medium -bufsize 400k -maxrate 400k -pix_fmt yuv420p -s 640x360 -f flv rtmp://channel001-streamingtest.channel.media.windows.net:1935/live/a9bcd589da4b424099364f7ad5bd4940/mystream1

     

    預覽串流

    您可以透過 Azure 管理網站來預覽甚至是發布您的串流。關於預覽與發布串流的詳細資訊,請參考Microsoft Azure中文部落格如何使用 Microsoft Azure Media Services 進行現場直播 ( Live Streaming )

    做為替代方案,您也可以使用 http://amsplayer.azurewebsites.net/ 來選擇不同的播放器來預覽您的串流視訊。

    進階設定

    在預設的情況下,Azure Media Service 通道被設定為每兩秒內嵌主畫面資料,並且使用 HLS 輸出 3 對 1 的對映設定 ( 3 to 1 mapping ),這代表著若您每兩秒內嵌一次主畫面資料,則您的 HLS 輸出片段則為六秒 ( 3 * 2 = 6 second )。

    若您想要調整這個內嵌的時間間隔,您必須使用 SDK。因為這種進階設定無法透過 Azure 入口網站做設定。您可以透過 Creating a Live Streaming Application with the Media Services SDK for .NET 來了解更多使用SDK來進行進階設定的資訊

    關於設定的參數,請參閱 :

    ChannelInput/KeyFrameInterval

    ChannelOutput/Hls/FragmentsPerSegment

    總結與未來發展

    本篇文章介紹了如何在 Azure Media Service 使用支援 RTMP 協定的多種編碼器,以及介紹了詳細的設定細節 。

    除了上述的功能之外,您還可以使用 Azure Media Service 完成更多的功能,更多的資訊您可以參考官網 Azure Media Services”,也可以透過 SDK 來完成建立即時串流 Working with Azure Media Services Live Streaming”

    希望您透過上述的文章可以了解如何在 Azure Media Service 上使用 RTMP 協定的編碼器,若是有任何的問題,可以透過官網讓我們知道。

  • 如何將 MySQL 資料庫轉移到 Microsoft SQL Server 與 Azure SQL Database

    代發北科大劉建昌同學所撰寫之技術文件

    MySQL 是相當常用之資料庫伺服器,而微軟雲端服務 Microsoft Azure 上 Azure SQL Database 是一個功能強大且經濟實惠的選擇,透過本篇文章,使用 SQL Server Migration Assistant ( 以下簡稱 : SSMA ) 利用幾個簡單的步驟,可將您的 MySQL 資料庫移轉到  Microsoft SQL Server 或是 Azure SQL Database 上。

    SQL Server 移轉小幫手

    SSMA 支援多種架構的資料庫 (Sybase、Oracle、MySQL) 快速移轉到 Azure SQL Database 或 Microsoft SQL Server。它將移轉資料庫的主要步驟;例如 : 結構 (Schema) 轉換、SQL 陳述式轉換、資料表格移轉等加以自動化,來減少從不同架構的資料庫移轉至 Azure SQL Database 或 Microsoft SQL Server 的時間和風險。SSMA 目前提供以下多種版本:

    • 支援 Oracle 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

    Microsoft SQL Server Migration Assistant v6.0 for Oracle

    • 支援 MySQL 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

    Microsoft SQL Server Migration Assistant v6.0 for MySQL

    • 支援 Sybase 之 Microsoft SQL Server 移轉小幫手 (Version 6.0)

    Microsoft SQL Server Migration Assistant v6.0 for Sybase

    • 支援 Access 之 Microsoft SQL Server移轉小幫手 (Version 6.0)

    Microsoft SQL Server Migration Assistant v6.0 for Access

    關於安裝步驟,詳情請參考 : SQL Server Migration Assistant Team's Blog

    將 MySQL 資料庫移轉到 Microsoft SQL Server 步驟

    1. 下載並且安裝 Microsoft SQL Server Migration Assistant for MySQL

    2. 開啟 Microsoft SQL Server Migration Assistant for MySQL

    接著點選 File 來新增一個新的資料庫物件(object)。

    clip_image002

    在新增物件的對話方塊中,會要求輸入物件名稱以及要將 MySQL 資料庫移轉到哪個版本的 Microsoft SQL Server 或是 Azure SQL Database ( 舊名 SQL Azure )。本範例中我們選擇將 MySQL 資料庫移轉到 Microsoft SQL Server 2008 Express 版。

    clip_image004

    選取 "OK",則新的資料庫物件就建立好了。

    注意 : 若是您目前的 SQL Server 版本是舊版本 (例如 : SQL Server 2008),則您資料庫物件轉移選項不能夠高於此版本。

    3. 建立 MySQL 資料庫連線

    選取左上角的 "Connect to MySql"

    clip_image006

    輸入 MySQL 的伺服器名稱、連結的通訊端口、使用者名稱與密碼

    clip_image008

    注意 :

    • 要連結 MySQL 的話,還需要安裝 MySQL-Connector-odbc (版本5.1以上),若先前沒有下載的話,在上圖頁面中會被提醒要下載 MySQL ODBC,您可至 http://dev.mysql.com/downloads/connector/odbc/ 下載安裝
    • MySQL-Connector-odbc 無法連接 MySQL 4.0 與更舊版本的 MySQL

    輸入完畢之後,點選 "Connect" 按鈕,接著如下圖所示。在左上邊的 MySQL Metadata Explorer 會顯示出我們想要轉移的 MySQL 資料庫 (world),而在最下方輸出列中會顯示 SQL Server Migration Assistant 已經成功的連接到 MySQL。

    clip_image010

    上圖右方則是可以讓我們設定對映的 Type、Schema 等移轉的選項。

    4. 連接 Microsoft SQL Server

    選取左上角"Connect to SQL Server"

    clip_image012

    接著輸入 SQL Server 的伺服器名稱、目標資料庫名稱以及使用者帳密。

    clip_image014

    輸入完畢之後,會看到以下的警告訊息。

    會出現以下原因為 SQL Server 2008 Express R2 不提供SQL Agent,但是這並不影響移轉的結果,這邊選擇繼續。

    clip_image016

    若您輸入的資料庫在 SQL Server 中不存在的話,會有提示告訴您要建立一個。

    clip_image018

    如同步驟三一樣,在最下方工具列上,可以看到 SQL Server Migration Assistant 已經成功的連到了目標 SQL Server

    clip_image020

    5. 轉換結構描述(Convert Schema)

    目前 SQL Server Migration Assistant 已經連接上了 MySQL 和 SQL Server,接著我們要來轉換結構描述,將 MySQL 資料庫中的欄位、欄位類型、主鍵 (primary key)、外鍵 (foreign key) 等結構轉換適用到 SQL Server。

    點選要轉換的MySQL資料庫,選取上方工具列的"Convert Schema"。

    clip_image022

    完成轉換後,我們可以看到 SQL Server 裡面已經有與 MySQL 資料庫中相同的 Schema。

    clip_image024

    6. 同步 (Synchronize)

    上述步驟已經將 MySQL 的表單和 Schema 轉換到 SQL Server 上。下一個步驟,我們要使用 SSMA 將 SQL Server 與資料庫物件做同步。

    在SQL Server資料庫中,點擊滑鼠右鍵,選取 "Synchronize with database "

    clip_image026

    clip_image028

    在最下方的輸出列中可以看到同步已經完成了。

    clip_image030

    7. MySQL 的資料轉移到 SQL Server

    最後一個步驟就是將 MySQL 資料庫內的所有資料全部轉移到 SQL Server 之中。

    選取工具列上的 "Migrate Data"

    clip_image032

    資料轉移結束之後,可以從資料轉移報告上看到資料移轉的情況

    clip_image034

    從下圖可以看到資料成功的從 MySQL 資料庫移轉到 SQL Sever上

    clip_image036

    將 MySQL 資料庫移轉到 Azure SQL Database

    將 MySQL 資料庫移轉到Azure SQL Database 的步驟其實與上面所述相當接近,只有在建立資料庫物件與建立連線上有些許的差別。

    1. 點選 File來新增一個新的資料庫物件 (object)。

    clip_image037

    與上述有差別的地方就是,在建立物件的對話框中,我們要選取移轉的資料庫為 ”SQL Azure” ( Azure SQL Database 舊名)

    clip_image039

    當資料庫物件建立完成,並且與 MySQL 資料庫連接 (上述步驟3),此時我們要來建立與目標 Azure SQL Database 的連結。

    2. 首先要先在 Microsoft Azure 上建立一個 Azure SQL Database。

    詳細的方式請參閱這裡

    3. 建立好了 Azure SQL Database 之後,我們進入 Azure 管理頁面,並且選擇 ”SQL 資料庫”

    clip_image041

    4. 在這項服務中,可以看到訂閱帳戶中的所有Azure SQL Database。

    點選移轉目標的資料庫後,在儀表板的右下角可以看到 Azure SQL Database 的伺服器名稱,這個名稱就是在下個步驟中,要建立SSMA 與 Azure SQL Database 連線時,所要輸入的伺服器名稱。

    clip_image043

    5. 由於在步驟1已經告知 SSMA 要移轉的目標為Azure SQL Database,也因此在工具列選項也與上述不同。

    選取”Connect to SQL Azure”

    clip_image045

    在這裡需要輸入步驟4的伺服器名稱、伺服器帳號密碼、目標資料庫名稱

    clip_image047

    建立完成之後,在左手邊的 "SQL Azure Metadata Explorer" 視窗可以看到,SSMA 已經與您的 Azure SQL Database 完成連線。

    clip_image049

    6. 建立完SSMA與Azure SQL Database 的連線之後,剩餘的動作包括:轉換結構描述、同步、移轉資料等步驟都與上述相同。

    下圖顯示資料已經成功的移轉到Azure SQL Database

    clip_image051

    7. 完成最後一項步驟之後,透過 Microsoft Azure 的管理網站,我們可以直接使用SQL Database Management Portal 來管理資料庫,在此之前我們需要先取得存取資料庫權限。

    進入到Azure SQL Database 的管理頁面,在最下方工具列選取管理。

    clip_image053

    此時會跳出對話框,詢問您是否要將您目前的 IP 位址加至防火牆規則中,選取"是",這樣 Azure 就會自動將您的 IP 加至規則中,如此才能夠進入 Azure SQL Database 的管理頁面。

    clip_image055

    您也可以透過伺服器管理頁面,將您所在的 IP 位址加至允許存取伺服器的 IP 範圍中

    clip_image057

    8. 取得管理權限之後,就可以使用SQL Database Management Portal 進入到資料庫內部進行管理。

    輸入伺服器使用者名稱與密碼 (先前在新增步驟時所建立的)

    clip_image059

    透過 Azure SQL Database 的管理介面可以看到,MySQL 資料庫的 Schema 和資料已經成功的移轉到Azure SQL Database上。

    clip_image061

  • 如何規劃您放在 Azure 上的網站服務

    原文發表自 How to plan your migration to Azure Websites

    把應用程式移轉到雲端平台上(順利地運作)有時候也是件不容易的事情,若您採用 Azure 網站服務來託管您的 web 應用程式,那我們有幾件事情想讓您知道,作為移轉時的參考。

    1. 遍佈全球

    目前 Azure ��站服務已經正式營運,所以 Microsoft Azure 全球的資料中心都可以提供 Azure 網站服務,這點對於想要做全球生意的您來說是相當方便且重要的,您可以參考這份清單來看 Microsoft Azure 在哪些地區提供了什麼樣的服務。

    2. Azure 網站服務已經內建負載平衡器

    若您使用其它的雲端或是 IaaS 服務,當您架設網站時可能還要自行搭建負載平衡器(load balancer),而在 Azure 網站服務上,您不必擔心負載平衡的問題,您只需要設定要使用多少資源來運作網站,Azure 網站服務會幫您做好負載平衡,即使是跨不同區域的流量,您也可以直接使用 Microsoft Azure 所提供的流量管理員(traffic manager)來平衡跨地區的流量。但要注意的是,若您使用免費的網站服務價格方案,則並不支援負載平衡器。

    結論就是:使用 Azure 網站服務來託管 Web 應用程式,不需要再另外架設負載平衡器。

    3. Azure 網站服務底層是使用 IIS 伺服器

    Azure 網站服務的底層是由 Windows Server 以及 IIS (作為 Web 伺服器)的技術所建置而成,在這個架構上目前支援了 .NETPHPNode.JSPython 以及 Java 程式語言所開發的 web 應用程式,所以關於安全性、錯誤診斷以及效能都可以完全利用 IIS 伺服器的功能來完成,詳細資訊可以參考這裡

    4. 瞭解 Azure 網站服務的服務水準(SLA)

    在 Azure 網站服務上的 web 應用程式都不該假設服務能在 100% 的時間都上線運作,請詳情閱讀 Azure 網站服務的服務水準,您會知道目前 Azure 網站服務保證了每個月 99.9% 的服務水準。

    然而,若您除了 Azure 網站服務之外,還使用了其它的 Azure 或非 Azure 的服務,像是資料庫、儲存體、CDN 服務等等,那您必須也要瞭解這些服務本身的服務水準。

    若您希望自己的 web 應用程式服務水準能夠超過 99.9%,那您必須要為可能發生的錯誤做好設計,以便讓網站應用程式在發生問題時,能夠自動重試或是自行復原。

    5. 瞭解各個價格方案

    Azure 網站服務目前提供了四種價格方案:免費共享(預覽)基本標準

    • 共享方案(預覽):使用共享價格方案,在預覽期間,一個 web 實體的一個小時運算費用為新台幣 0.39 元,一個月差不多約新台幣 300 元左右(視匯率而定)。
    • 基本及標準方案:基本及標準方案提供不同的主機大小,讓您可以根據需要隨時自行更改運算資源,每個月的價格從新台幣 1680 元(基本方案,一台機器,小型主機)或新台幣 2250 元(標準方案,一台機器,小型主機)起。

    關於價格以及詳細的功能資訊,請參考這一頁的說明。

    6. 在 Azure 網站服務上無法直接操作服務的虛擬主機

    Azure 網站服務提供平台來運作您的 web 應用程式,但您無準連線到該服務的虛擬主機進行操作或安裝特定的軟體,這是平台即服務(platform-as-a-service)的特性,由服務商直接來管理虛擬機器的部份,而您只需要專注在程式的開發即可。

    當然我們建議您,開發無狀態(stateless)的 web 應用程式可以得到更好的延展性。

    7. 自動延展

    目前只有選擇標準價格方案才能使用自動延展(Auto-scale)的功能,這可以幫助您省下自行監控及手動操作的力氣,費用上也較有效率,因為自動延展機制會根據狀態自行幫您挑選合適的運算資源,以免造成浪費或平足,詳細的資訊可以參考這篇文章的說明。

    8. Azure 網站服務的磁碟伺服器是共享的

    Azure 網站服務中,每一個 Web 實體都有本地端的磁碟空間,不過這個磁碟伺服器是在同一個 Web 服務下各實體間共享的,所以同一個 web 下的各實體都可以共享像是 session、cache 之類的資料。

    9. 快取

    Azure 網站服務針對 PHP 應用程式提供了 Wincache ,而 IIS 伺服器也設定了 Output Cache 讓所有放在 Azure 網站服務上的應用程式享用到這個快取。

    在大部份的狀況下,這樣的快取機制已經足夠,但如果您需要更高等級的快取,您可以選擇:

    10. 提供部署的預備環境

    Azure 網站服務在標準的價格方案下,提供了部署預備環境(staging)的機制,您可以在網站開發完成後,先部署到預備環境,待測試沒有問題之後,直接在不停機的狀況下立刻切換上線,詳細的操作可以參考這篇文章

    11. SSL

    為了讓瀏覽器與網站之間的通訊更安全,我們會使用 HTTPS 通訊協定來進行資料傳輸,這時就必須使用 SSL 加密技術,Azure 網站服務可以讓您直接設定好 SSL 連線,詳情請參考這篇文章

    12. 自訂網域名稱

    當您建立網站服務時,Microsoft Azure 會提供給您一個網域名稱像是:http://<mysite>.azurewebsites.net 來使用,而當然您也可以設定自訂的網域名稱,詳細的內容請參考這篇文章

    13. 使用 WebJobs 執行背景程式

    Azure 網站服務不只是能執行網站應用程式,也能透過 WebJobs 來背景執行一些批次的工作,詳細的使用請參考這篇文章

    14. 自我修復

    在 Azure 網站服務中開啟了自我修復的功能後,您的網站就會自動偵測是否有狀況發生,以及嘗試進行復原,詳細的設定及功能請參考這篇文章

    15. 備份及還原

    Azure 網站服務提供您可以很方便地自動或手動進行網站內容的備份及還原,您不僅可以回溯到之前的網站,也可以用備份的內容建立新的網站。

    關於網站備份的部份,可以參考這篇文章;而這篇文章則說明了如何從備份中進行還原。

    16. 使用 SendGrid 服務來寄送郵件

    Azure 網站服務本身並沒有提供 SMTP 的服務來寄送信件,您可以使用像是 SendGrid 這樣的服務來寄信,價格方案可以參考這裡,而這篇文章也說明了要如何設定 SendGrid。

    Azure 網站服務上線前的確認

    • 確認您使用正確的資料中心。
    • 瞭解 Azure 網站服務的價格方案,來規劃網站的方案,以及考慮是否要使用預備部署環境。
    • 選擇部署方案:Visual Studio Online、Git、Web Deploy、Dropbox 還是 Bitbucket 等等。
    • 設定快取、資料庫等等。
    • 設定開發與測試的環境。
    • 建議使用基本或標準的方案來運作上線的網站服務。
    • 考慮使用 Azure 儲存體或媒體服務來處理多媒體檔案。
    • 設定自我修復的機制。
    • 設定自動備份。
    • 設定自動延展。

    結論

    在 Azure 網站服務上有很多種架構設計的方式,這篇文章只是特別提示幾個重點,希望可以協助您部署成功的網站服務。