1. 程式人生 > >使用OBS+Azure Media Service+CDN進行直播,配置方法及最佳實踐

使用OBS+Azure Media Service+CDN進行直播,配置方法及最佳實踐

我們知道,在Azure Media Service進行直播需要一個本地實時編碼器的配合。從Azure官方文件可以瞭解到下列四種編碼器的配置方法: 
  • Elemental Live
  • FMLE
  • Telestream Wirecast
  • NewTek TriCaster

OBS - Open Broadcaster Software (https://jp9000.github.io/OBS/settings/encodingsettings.html) 目前並不是Azure官方支援的實時編碼器,但使用下面的配置,我們仍然可以利用Azure的直播服務。本文還會介紹Azure直播頻道和CDN的配置方法。

OBS配置

其中的FMS URL是通過Azure管理門戶得到:

“播放路徑/串流碼”應填寫Azure媒體服務中的頻道名稱:

下面是對編碼器的配置:

Azure頻道設定

以上值得注意的是,當我們把視訊編碼設定為x264,這裡有一個已知問題,即x264視訊源不能在Azure直播頻道把單位元速率視訊流動態編碼成多位元速率,請參考這篇官方文件。所以,我們在建立直播頻道時,要注意下圖所示的選項。這一選項在建立頻道後無法更改。

CDN配置

這裡要注意的是: CUSTOM DOMAIN,您需要從自己公司註冊的域名中指定一個二級域名,例如: livest.mycompany.cn。然後ORIGIN HOST HEADER會自動彈出對應的值。在做出以上配置後,您需要到域名管理平臺裡配置CNAME。例如livest.mycompany.cn指向CDL URL (livest.zdnet.com.cn.mschcdn.com)。之後我們通過類似下面這樣的URL,來訪問通過CDN加速的直播視訊:

直播中要注意的問題

1. RTMP源到目標(直播現場到Azure雲)的頻寬和網路穩定性

一定要保證頻寬充足,應至少為上傳視訊位元速率總和的4-5倍。例如,上傳為800Kbps單位元速率,那麼直播現場的live encoder所在電腦應該有至少4Mbps獨享頻寬,並且要保證網路的穩定。否則,當直播源有一段時間不能連線伺服器,而且沒有保持RTMP連線,那麼直播源再次連線成功以後,也要在azure雲上reset channel,才能重新正常播放。

2. 使用Azure Media Player實現自動重連

選擇Azure Media Player可以節省開發客戶端播放器的開銷和精力。它是一個基於HTML5實現的可以跨不同裝置的播放器:

http://ampdemo.azureedge.net/。您可以將程式碼嵌入到您的HTML網頁裡,實現視訊播放。這個播放器在遇到網路錯誤時,如果不加處理,會返回下面的頁面:

這時,如果使用者手動重新整理頁面,視訊又會繼續播放。為了解決這一問題,我們可以新增下面的程式碼,自動重新整理頁面,提高使用者體驗。請參考下面的程式碼片段:




相關推薦

使用OBS+Azure Media Service+CDN進行直播配置方法最佳實踐

我們知道,在Azure Media Service進行直播需要一個本地實時編碼器的配合。從Azure官方文件可以瞭解到下列四種編碼器的配置方法:  Elemental LiveFMLETelestream WirecastNewTek TriCasterOBS - O

MySql 允許任意ip進行訪問配置方法

寫實用的部落格。 首先 在資料庫的根路徑下執行 : mysql -u root -p mysql 第二步 mysql> GRANT ALL PRIVILEGE

用iPhone和Wirecast在Azure媒體服務上進行直播

本文詳細介紹如何使用iPhone和Wirecast在Azure雲端進行直播。 2. 在電腦上安裝Wirecast 6.0以上版本。您可以在這裡(http://www.telestream.net/wirecast/overview.htm)下載試用版,或者購買商業版本。

mybatis原理配置介紹原始碼分析

前言 mybatis核心元件有哪些?它是工作原理是什麼? mybatis配置檔案各個引數是什麼含義? mybatis只添加了介面類,沒有實現類,為什麼可以直接查詢呢? mybatis的mapper對映檔案各個引數又是什麼含義? mybatis-spring提供哪些機制簡化了原生mybatis? m

php xml與陣列轉換問題封裝方法字串替換

/** * [將xml轉為array] * @param string $xml xml字串或者xml檔名 * @param bool $isFile 傳入的是否是xml檔名 * @re

死鎖原因解決避免方法哲學家就餐問題

死鎖的四大條件: 互斥:資源不能共享,只能由一個程序持有 佔有且等待:當一個等待另外程序而阻塞時,資源不主動釋放 不可搶佔:作業系統不能強行搶佔被程序持有的資源 迴圈等待:存在一個封閉的程序鏈,使得每一個程序都至少佔有下個程序所需要的資源。 這個四個資

Windows media player控制元件的屬性、方法應用

[基本屬性] URL:string             可以指定媒體位置 enable ContextMenu:Boolean  顯示/不顯示播放位置的右鍵選單 full Screen:boolean       全屏顯示 stretch To Fit:boolean     非全屏狀態時是否伸展到最佳

淺談bind、call、apply區別使用方法場景

談到bind、call、apply,首先想到的是改變this全域性上下文指向,但三者的區別,就自己的使用淺談心得。 首先,直接呼叫三個方法並列印,獲取直觀對比,demo程式碼如下: <script> var objA = { name:

毫秒必爭前端網頁效能最佳實踐

你願意為開啟一個網頁等待多長時間?我一秒也不願意等。但是事實上大多數網站在響應速度方面都讓人失望。現在越來越多的人開始建立自己的網站,部落格,你的網頁響應速度如何呢?在這篇文章中我們來介紹一下提高網頁效能的最佳實踐,以及相應的問題解決方案,讓站長或者即將要成為站長的朋友瞭解如何去測試和提高網站響應速度,對自己

網站開啟速度慢的原因排查方法優化方法(大全)

如果你的網站開啟速度過慢,而你又不知道該如何解決,那麼這篇文章是非看不可了。手把手的教你如何排查網站開啟慢的原因,以及優化方法。 排查網站開啟速度慢的原因: 1網站伺服器速度或租用空間所在伺服器速度伺服器空間速度是網站開啟速度快的硬體基礎,也是先決條件。否則即使你網站頁面設

python基礎五:元組的indexdelcount方法字典的修改、增加、刪除(del、clear)、遍歷(keys、values、items)

元組:index、del、count的方法。index的用法:用來查詢元組中元素對應的下標。格式:元組變數名.index(查詢的元素)例項:    del的用法:用來刪除整個元組。格式:del       元組變數名例項:      count的用法:用來統計元組中指定元素的

kubelete對pod中容器的探測分為liveness失敗則重啟容器;readiness失敗則不作為service的後端pod進行服務等待;

本文將向展示如何配置容器的存活和可讀性探針。 Kubelet使用liveness probe(存活探針)來確定何時重啟容器。例如,當應用程式處於執行狀態但無法做進一步操作,liveness探針將捕獲到deadlock,重啟處於該狀態下的容器,使應用程式在存在bug的情況下依然能夠繼續執行下去(誰

剖析微軟Azure Container Service服務多方管道支援Kubernetes_Kubernetes中文社群

微軟Azure Container Service重點策略 單一平臺可管理Windows和Linux的容器叢集 開發工具深度整合容器部署,挾開發工具生態系優勢搶攻企業市場 在微軟CEO Satya Nadella上任之後,近年微軟無論是擁抱Linux或是走向開源的可說成效有目共睹,其公有

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常型別自定義異常類這裡我們建立一個自定義系統異常如果controller、service、dao丟擲此類異常說明是系統預期處理的異常資訊。

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和執行時異常RuntimeException,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範程式碼開發、測試通過手段減少執

springmvc在處理請求過程中出現異常信息交由異常處理器進行處理自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常類型自定義異常類這裏我們創建一個自定義系統異常如果controller、service、dao拋出此類異常說明是系統預期處理的異常信息。

ansi req -type this spring 進行 name ext code springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和運行時異常Ru

使用Azure媒體服務對現場活動進行直播

本文介紹以下三方面內容: 搭建直播系統所需的元件,以及每個元件的功能。一次直播活動的流程,包括準備工作,進行中和活動結束。這裡給出建議的步驟,供讀者參考。直播在Azure中產生的費用。1. 系統架構 1.1 攝像裝置和客戶端編碼軟體 攝像裝置可以是專業攝像機、筆記本自帶的

使用FMS進行HDSRTMPHLS直播

安裝FMS4.5,全部安裝,包括web伺服器 保留1935跟80埠 在瀏覽器開啟127.0.0.1會看到示範頁面 有HDS,RTMP,HLS三種協議 HLS在apple iso裝置上可以看到效果 釋出 使用flashmedialiveencoder FMS URL填寫 rtmp://l

【mysql】service mysql start出錯mysql啟動不了解決mysql: unrecognized service錯誤

開機 init.d starting 設置 tin 執行 rest root lan service MySQL start出錯,mysql啟動不了,解決mysql: unrecognized service錯誤的方法如下: [[email protected]/

UE4開發PSVR遊戲使用RazorGPU進行調試的方法

org 方法 eve ole dev ue4 tags 輸入 razor 打開Project Launcher,如果沒有需要的Devkit平臺目標,就點下方的Device Manager,右鍵Claim 相應的目標。如果已經出現在Project Launcher中,點擊上

文件中的類都不能進行設計因此未能為該文件顯示設計器。設計器檢查出文件中有以下類: FormMain --- 未能加載基類

color 理解 重新編譯 如果 窗口 images ges -i 引用 出現該問題的原因:FormMain從FormMainBase繼承之後,一旦修改FormMainBase就會出現這個問題 解決方案:(1-4是搜索網友的) 1: 關閉VS所有窗口,後重啟.即可返