國產Linux音影片聊天程式開發遇到的坑及解決:相互聽不到對方聲音?

Linux音视频开发發表於2024-05-20

最近完成了一個銀河麒麟上的影片聊天專案,在我們開發機上測試一切正常後,提交給甲方測試。結果發現在甲方的某些銀河麒麟V10的電腦上,聽不到聲音。

這個問題,使用《Avalonia 實現跨平臺的IM即時通訊、語音視訊通話(原始碼,支援信創國產OS,統信、銀河麒麟)》這個Demo就可以重現。

我們在客戶的幾臺麒麟V10上做了各種測試,而同一臺電腦,在某些情況下又是正常能聽到聲音的,這真是太奇怪了。

經過漫長的摸索排查,確認麥克風揚聲器硬體沒有問題,程式也沒有問題,最後,終於找到了問題的根本所在。

經過反覆測試,發現這個問題跟銀河麒麟V10的系統的聲音設定有關。

1. 將系統麥克風和揚聲器的音量調到最大

如果揚聲器音量沒有開到最大,那麼即使正常的語音資料提交給系統去播放,也是聽不到聲音的。如下圖,將麥克風的聲音設定為最大。

如果麥克風音量沒有開到最大,那麼採集到的麥克風聲音資料都是靜音資料(全0),這也解釋了麥克風聯結器連線是正常的,為什麼聽不到聲音了,因為收到的聲音資料全是0。

2. 在銀河麒麟V10上,麥克風和揚聲器裝置是獨佔模式

  如果開啟了如上圖所示的聲音設定視窗,麥克風和揚聲器就被系統獨佔了。此時,如果再執行我們音視訊通話程式,程式開啟麥克風和揚聲器就會失敗。

綜上所述,在國產OS銀河麒麟V10上,要想音視訊通話正常,需要保證:麥克風和揚聲器的音量開到最大,沒有其它別的程式(包括系統設定皮膚)佔用了麥克風和揚聲器。

開發國產OS上的音影片程式這麼久了,感覺跟之前windows相比,國產OS對音影片裝置的支援還是差一些,還有一段距離。

相信國產OS越來越好,到最後完全取代掉windows。當然,這需要更多的人將國產OS用起來,現在國家正在大力支援信創這塊,前途還是很樂觀的。

相關文章