當說話參與者的麥克風發生問題時,可能會導致傳出音訊沒有聲音,造成通話中的單向音訊問題。
如何使用 SDK 進行偵測
您的應用程式可以使用使用者面向診斷 API,並註冊接聽程式回呼來偵測裝置問題。
麥克風問題會造成幾個相關事件,包括:
noMicrophoneDevicesEnumerated
:系統中沒有可用的麥克風裝置。microphoneNotFunctioning
:瀏覽器會結束音訊輸入軌道。microphoneMuteUnexpectedly
:瀏覽器會將音訊輸入軌道設為靜音。
此外,媒體統計資料 API 也可讓您監視音訊輸入或輸出層級。
若要檢查傳送端的音訊層級,請查看 audioInputLevel
值,其範圍介於 0 到 65536,並指出音訊輸入裝置所擷取的音訊音量層級。
若要檢查接收端的音訊層級,請查看 audioOutputLevel
值,其範圍也是介於 0 到 65536。 這個值表示已解碼音訊範例的音量層級。
如果 audioOutputLevel
值很低,表示傳送者傳送的音量也很低。
如何減輕或解決
從 ACS 通話 SDK 的觀點來看,麥克風問題會被視為外部問題。
例如,noMicrophoneDevicesEnumerated
事件表示系統中沒有可用的麥克風裝置。
當使用者移除麥克風裝置,且系統中沒有其他麥克風裝置時,通常就會發生此問題。
當瀏覽器結束目前的音訊輸入音軌時會引發 microphoneNotFunctioning
事件,若操作系統或驅動程式層終止音訊輸入工作階段,就會發生此問題。
當音訊輸入音軌的來源暫時無法提供媒體資料時,就會發生 microphoneMuteUnexpectedly
事件。
例如,某些頭戴式裝置型號的硬體靜音按鈕會觸發此事件。
應用程式應該接聽使用者面向診斷 API 事件。 應用程式應在接收事件時顯示警告訊息。 這樣一來,使用者就會察覺到問題,並藉由切換至不同的麥克風裝置,或將其目前的麥克風裝置拔下後插入,以進行疑難排解。
參考資料
疑難排解程序
如果使用者在通話期間無法聽到聲音,其中一種可能性是說話參與者的麥克風有問題。 如果說話參與者使用您的應用程式,您可遵循此流程圖來針對問題進行疑難排解。
- 首先,檢查麥克風是否可用。 應用程式可以藉由叫用
DeviceManager.getMicrophone
API 或偵測noMicrophoneDevicesEnumerated
UFD 錯誤事件來取得此資訊。 - 如果沒有可用的麥克風裝置,請提示使用者插入麥克風。
- 如果麥克風可以使用,但沒有傳出音訊,請考慮其他可能性,例如權限問題、裝置問題或網路問題。
- 如果權限遭到拒絕,請參閱說話參與者不會授與麥克風權限以取得詳細資訊。
- 如果已授與權限,請考慮問題是否是由外部問題造成,例如
microphoneMuteUnexpectedly
UFD。 - 當瀏覽器將音訊輸入音軌設為靜音時,就會觸發
microphoneMuteUnexpectedly
UFD 錯誤事件。應用程式可以監視此 UFD,但無法偵測 JavaScript 層的原因。 您仍然可以在應用程式中提供指示,並詢問使用者是否使用其頭戴式裝置上的硬體靜音按鈕。 - 如果使用者解除硬體靜音且
microphoneMuteUnexpectedly
UFD 復原,問題就會解決。 - 如果使用者未使用硬體靜音,請要求使用者拔除並重新插入麥克風,或選取另一個麥克風。 請確定使用者未在系統層級將麥克風靜音。
- 發生
microphoneNotFunctioning
UFD 錯誤事件時,也會發生沒有傳出音訊問題。 - 如果沒有
microphoneNotFunctioning
UFD 錯誤事件,請考慮其他可能性,例如網路問題。 - 如果有
networkReconnect
UFD 錯誤,則可能是因為網路中斷連線,導致傳出音訊暫時遺失。 如需詳細資訊,請參閱通話有網路問題。 - 如果沒有麥克風相關事件,也沒有網路相關事件,請建立支援票證以要求 ACS 小組調查問題。 請參閱報告問題。
- 如果發生
microphoneNotFunctioning
UFD 錯誤事件,而且使用者沒有傳出音訊,則可以使用 ACS 靜音和取消靜音來嘗試復原串流。 - 如果使用者執行 ACS 靜音和取消靜音之後
microphoneNotFunctioning
UFD 未復原,則可能是麥克風裝置發生問題。 要求使用者拔除並重新插上麥克風,或選取另一個麥克風。