最近參加了好幾場使用 Microsoft Teams 進行的網路直播,我就很好奇他們到底是怎麼做到的,經過一段時間的研究,終於研究出可以成功啟用此功能的方法與步驟。這篇文章我就來說說啟用的過程,以及設定時的注意事項。
從 Teams 管理中心啟用 NDI 功能
我光是第一個步驟就卡了好幾週,一直遲遲找不到幫 Teams 啟用 NDI 的方法,明明設定就很簡單,但是我就是無法啟用,我們馬上來看看這個設定的地雷在哪裡。
基本上要在 Teams admin center 啟用 NDI 功能,請參考以下步驟:
-
開啟 Teams admin center 頁面 ( https://admin.teams.microsoft.com/ )
-
開啟 Meetings
> Meeting policies
-
點擊 Global (Org-wide default)
-
找到 Broadcast production with NDI and SDI hardware
選項,並啟用該選項!(早期的名稱叫做 Allow NDI Streaming
但後來改名成 Local broadcasting
然後又改名一次)
![Teams admin center > Meetings > Meeting policies > Local broadcasting](https://user-images.githubusercontent.com/88981/151669107-d4ef6bd6-2bd8-423b-93b1-77a2f7392f03.png)
這裡我修改的是 Global
的全域設定,基本上應該會套用到組織中所有人身上,但在我公司設定就是無法生效。過了好幾天之後才發現,原來我公司所有人的 Meeting policy 都不是選擇 Global (Org-wide default)
,而是選擇較為嚴格的 RestrictedAnonymousAccess (Direct)
會議原則 (Meeting policy),難怪我怎麼設定都無效!
以下示意圖的瀏覽路徑是 Users
> Manage users
> 點選使用者
> Policies
:
![Policies](https://user-images.githubusercontent.com/88981/151669429-b2f0f5dc-5f3f-4ad2-8d28-bf4d8c8997b4.png)
你要點選如上圖 Assigned policies
右邊的 Edit
連結,才能將該使用者的 Meeting policy 切換到 Global (Org-wide default)
![image](https://user-images.githubusercontent.com/88981/151669510-c4240da8-f10f-4867-9dc6-2f5d493ffa0a.png)
你可以使用 Windows PowerShell 快速完成上述動作。
-
安裝 Teams PowerShell
Install-Module MicrosoftTeams
-
連接 Microsoft Teams
Import-Module MicrosoftTeams
$credential = Get-Credential
Connect-MicrosoftTeams -Credential $credential
-
將使用者快速切換成 Global
(預設值)
你可以透過以下 Cmdlet 取得所有 Microsoft Teams 的使用者清單
Get-CsOnlineUser | select UserPrincipalName
你可以透過以下命令將其中一位使用者的 Meeting Policy 切換回預設的 Global
會議原則
Grant-CsTeamsMeetingPolicy -Identity "will@duotify.onmicrosoft.com" -PolicyName ""
我到現在還是不理解,為何我公司所有人都會預設切換到 RestrictedAnonymousAccess
會議原則?
-
將 Global
(預設值) 啟用 Local broadcasting
選項 (即 NDI Streaming 功能)
Set-CsTeamsMeetingPolicy -Identity Global -AllowNDIStreaming $true
你也可以透過 New-CsTeamsMeetingPolicy 來建立新的會議原則,並透過 Grant-CsTeamsMeetingPolicy 授權給使用者。
從 Teams 桌面版啟用 NDI 功能
當你從 Teams admin center 啟用 NDI 功能後,還要在你的 Teams 桌面版應用程式開啟這個 NDI 設定
-
點擊 Teams 右上角的 ...
與 設定
![image](https://user-images.githubusercontent.com/88981/151670508-cde9050c-ae7c-42d2-b1d6-dec89efaedba.png)
-
切換到 應用程式權限 (Permissions) 並啟用 產品功能 > 網路裝置介面 (NDI) 選項
![image](https://user-images.githubusercontent.com/88981/151670622-8b7cfc4d-5360-4ef8-be20-b48003a4ac03.png)
注意: 上圖箭頭的地方,若你沒有在 Teams admin center 啟用 NDI 功能,該選項是看不見的!
從 Teams 會議中透過 NDI 廣播
當你已經啟用 Teams 桌面版應用程式的 NDI 選項,就可以在 Teams 視訊會議中看到 透過 NDI 廣播 的功能,如下圖這樣點擊就會開始透過 NDI 廣播出去了!
![image](https://user-images.githubusercontent.com/88981/151670756-ebe6fb6d-9b15-4db3-b494-092e9c32d9af.png)
設定 OBS 使用 Teams 來賓的 Webcam 視訊
當你的 Teams 會議開始透過 NDI 廣播,你當然要開啟能夠接收 NDI 廣播的本機應用程式,這裡我們使用 Open Broadcaster Software (OBS) 來接收 NDI 來源訊號。
-
安裝 OBS 與 NDI 支援
安裝 Open Broadcaster Software (OBS) 軟體
安裝 OBS NDI Plugin
-
開啟 OBS 並在 Sources 新增一個 NDI™ Source
訊號來源
設定一個名稱,例如:Teams Host 或 Teams Guest 1
設定以下屬性 (Properties):
- Source name: 選擇你希望從 Teams 讀取哪一個 NDI™ Source 來源
- Bandwidth: 選擇
Highest
- Sync: 選擇
Source Timing
(這個設定會同步你的聲音與影像)
- 勾選
Allow hardware acceleration
(若有 GPU 才會使用)
- Latency Mode: 選擇
Low
-
解決 NDI 訊號會大小跳動的問題
這個步驟至關重要,因為 Teams 在開視訊會議的時候,影像的品質會依據目前的頻寬使用現況動態調整解析度,以確保會議在低頻寬的環境下也能正常進行。簡單來說,Teams 會允許降低視訊的解析度,以確保會議不會因為頻寬而導致畫面或聲音延遲。另一方面,當你在 分享螢幕 時,所有人的視訊解析度也會自動降低,因為 Teams 認為這個時刻大部分的人應該會把焦點著重在分享的畫面上。
視訊的解析度忽大忽小會導致一個嚴重的問題,那就是 OBS 收到的 NDI™ Source 的解析度變化,會讓畫面上的來源訊號忽大忽小一直跳動,這會讓你在透過 OBS 直播時相當困擾。還好這個問題是可以透過 Transform
來解決這問題,我們只要限制視訊大小在指定的範圍內即可,以下是設定的步驟:
- 在
NDI™ Source
訊號來源按下滑鼠右鍵,點擊 Transform
> Edit Transform
設定 (或按 Ctrl+E
快速鍵)
- 變更 Bounding Box Type 下拉選單到
Scale to inner bounds
選項
- 按下
Close
即可設定完成
事實上,任何會發生忽大忽小的視訊來源,都可以用這個技巧進行設定!
注意事項
- Microsoft Teams 透過
NDI™ Source
傳過來的 影像訊號 (Video) 主要是 Webcam 的鏡頭影像,並不包含 分享桌面 的訊號!
- Microsoft Teams 透過
NDI™ Source
傳過來的 聲音訊號 (Audio) 每一條來源都包含 所有人 會議中的聲音,並不包含每位來賓的分軌音源!
- 使用 Microsoft Teams 搭配
NDI™ Source
進行直播,並不適合使用來賓分享桌面的方式進行轉播,桌面分享 (Display Capture) 僅適用於直播主的桌面!
- 如果 Teams 的來賓原本有 Webcam 影像訊號,但來賓突然斷線的話,其
NDI™ Source
的訊號會自動停格在最後一個關鍵影格 (Key frame),畫面不會感覺太奇怪。
相關連結