碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
Android下音視頻對講演示程序(聲學回音消除、噪音抑制、語音活動檢測、自動增益控制、自適應抖動緩沖)(2021年11月10日更新)
本文轉載自
查看原文
2020-09-02 17:00
702
Android下音視頻對講演示程序
必讀說明
簡介
本軟件根據《道德經》為核心思想而設計,實現了兩個設備之間通過TCP或UDP協議進行全雙工實時音視頻對講,並做了以下增強處理:
支持8000Hz、16000Hz、32000Hz、48000Hz的音頻。
支持聲學回音消除,通過本人自己設計的音頻輸入輸出幀同步方法、自適應設置回音延遲方法、三重聲學回音消除器,聲學回音可以消除到99%以上,還可以消除同一房間回音,且收斂時間很短,無論網絡如何抖動都可以消除。
支持噪音抑制,對常見的底噪音、嘈雜的街道音、風吹音、等都有抑制效果。
支持語音活動檢測,只有在人說話時才發送網絡數據,無人說話時不產生網絡數據,從而降低噪音、降低網絡流量。
支持自動增益控制,當人說話聲音較小時會自動增大音量,當人說話聲音較大時會自動減小音量。
支持音頻編解碼,對音頻數據的壓縮率在1~20%之間,且支持動態比特率,從而大幅度降低網絡流量,還支持數據包丟失隱藏,當網絡丟包率高達30%時,仍然可以進行對講。
支持保存音頻到文件和繪制音頻波形到Surface,可以直觀且方便的調試音頻。
支持視頻軟硬編解碼,支持指定比特率,最低到10KB/s仍然可以進行視頻對講,還支持橫豎屏切換。
支持音視頻自適應抖動緩沖,當網絡存在丟包、亂序、延時等抖動情況時,通過自適應調節緩沖深度來應對這些抖動。
支持與Windows下音視頻對講演示程序進行全雙工實時音視頻對講。
聲學回音消除器效果對比:
准備
准備兩台安裝了Android 2.3及以上系統的設備(已適配到Android 10.0),其中一台設備作為客戶端可以連接到另一台作為服務端的設備(可以用Ping工具測試,建議兩台設備在同一局域網內),且兩台設備都安裝相同版本的本軟件。
開始
在一台設備上直接點擊創建服務端,再在另一台設備上將IP地址改為服務端設備的IP地址,並點擊連接服務端,即可開始對講,在任意一端點擊中斷,即可中斷對講。
設置按鈕提供了各項功能的參數設置,絕大部分情況下都不需要修改,當然你也可以根據需要自行修改。
特別注意:如果把兩台設備放在同一房間里測試,有可能會出現嘯叫、聲音不完整、等問題,這是因為現在的麥克風都很靈敏了,一點小小的聲音都會被錄進去,兩台設備會相互錄音,導致軟件無法正確識別回音,所以建議放在不同的房間里測試。如果實在要測試這種情況,就在設置里,Speex預處理器的其他功能設置里,關閉“使用自動增益控制”后再測試。
移植
如果需要在自己的軟件中使用本軟件的音視頻功能,只需要將HeavenTao.XXXX包和jniLibs文件夾下各個平台的動態庫復制到自己的軟件中,然后繼承HeavenTao.Media.MediaProcThread類,實現UserInit、UserProcess、UserDestroy、UserReadAudioVideoInputFrame、UserWriteAudioOutputFrame、UserGetPcmAudioOutputFrame、UserWriteVideoOutputFrame、UserGetYU12VideoOutputFrame這八個回調函數,再在AndroidManifest.xml文件中添加android.permission.RECORD_AUDIO、android.permission.MODIFY_AUDIO_SETTINGS、android.permission.CAMERA權限即可。
如果用戶要在JNI層處理音視頻幀,則可以將那八個函數繼承為native函數,然后在JNI層實現即可。
如果用戶有不需要的部分功能,則只需要刪除該功能對應的庫文件即可,還可以進一步刪除對應的類文件,並修改HeavenTao.Media.MediaProcThread類文件即可。
普通免費功能包括:WebRtc定點版聲學回音消除器、Speex預處理器的噪音抑制、WebRtc定點版噪音抑制器、WebRtc浮點版噪音抑制器、Speex預處理器的其他功能、Speex編解碼器、Wave文件讀取器、Wave文件寫入器、音頻波形器、本端TCP協議服務端套接字、本端TCP協議客戶端套接字、本端UDP協議套接字。
高級收費功能包括:Speex聲學回音消除器、WebRtc浮點版聲學回音消除器、SpeexWebRtc三重聲學回音消除器、RNNoise噪音抑制器、OpenH264編解碼器、系統自帶H264編解碼器、自己設計的自適應抖動緩沖器。
Speex聲學回音消除器對應:libFunc.so、libSpeexDsp.so、SpeexAec.java。
WebRtc定點版聲學回音消除器對應:libFunc.so、libc++_shared.so、libWebRtc.so、WebRtcAecm.java。
WebRtc浮點版聲學回音消除器對應:libFunc.so、libc++_shared.so、libWebRtc.so、WebRtcAec.java。
SpeexWebRtc三重聲學回音消除器對應:libFunc.so、libSpeexDsp.so、libc++_shared.so、libWebRtc.so、SpeexWebRtcAec.java。
WebRtc定點版噪音抑制器對應:libFunc.so、libc++_shared.so、libWebRtc.so、WebRtcNsx.java。
WebRtc浮點版噪音抑制器對應:libFunc.so、libc++_shared.so、libWebRtc.so、WebRtcNs.java。
RNNoise噪音抑制器對應:libFunc.so、libc++_shared.so、libWebRtc.so、libRNNoise.so、RNNoise.java。
Speex預處理器對應:libFunc.so、libSpeexDsp.so、SpeexPproc.java。
Speex編解碼器對應:libFunc.so、libSpeex.so、SpeexEncoder.java、SpeexDecoder.java。
Wave文件寫入讀取器對應:libFunc.so、libWaveFile.so、WaveFileReader.java、WaveFileWriter.java。
OpenH264編解碼器對應:libFunc.so、libOpenH264.so、OpenH264Encoder.java、OpenH264Decoder.java。
系統自帶H264編解碼器對應:libFunc.so、libAndroidSystemH264.so、AndroidSystemH264Encoder.java、AndroidSystemH264Decoder.java。
圖片處理對應:libFunc.so、libLibYUV.so、LibYUV.java。
音視頻自適應抖動緩沖器對應:libFunc.so、libc++_shared.so、libAjb.so、AAjb.java、VAjb.java。
本端TCP協議UDP協議套接字對應:libFunc.so、libSokt.so、TcpSrvrSokt.java、TcpClntSokt.java、UdpSokt.java。
注意
不要在64位操作系統下使用32位動態庫,或在32位操作系統下使用64位動態庫,否則會導致意想不到的問題。
不要對HeavenTao.XXXX包進行代碼混淆,否則會導致意想不到的問題。
從老版本更新到新版本時,類文件和庫文件全部都要更新,不能只更新類文件或庫文件,否則會導致意想不到的問題。
如果要使用8000Hz采樣頻率時,最好不要使用RNNoise噪音抑制,因為它對8000Hz的聲音抑制非常強烈。
本軟件不支持音樂,尤其是系統自帶的噪音抑制器和RNNoise噪音抑制器可能對音樂的抑制非常強烈。
某些Android設備的軟硬件環境可能存在問題,從而可能會導致聲學回音消除失敗,這種情況必須要先解決這些問題。
某些Android設備的系統自帶的聲學回音消除器、噪音抑制器和自動增益控制器使用后可能會導致音頻輸入出現問題,這種情況可以先關閉后再試試。
音頻波形器占用CPU比較高,建議只在需要調試時臨時打開。
系統自帶H264編解碼器需要Android 5.0(API 21)及以上系統,且在某些Android設備上使用可能會花屏,這種情況只能使用OpenH264編解碼器。
其他
本軟件采用了Speex的1.2.0版本、SpeexDsp的1.2.0版本、WebRtc的2019年7月份版本、OpenH264的2021年3月份版本為基礎,並進行了大量優化。
討論QQ群:511046632 歡迎大家參與測試和討論!
本人QQ號:280604597 赤勇玄心行天道
本人博客:
http://www.cnblogs.com/gaoyaguo
Windows版源代碼:
https://github.com/cyz7758520/Windows_audio_talkback_demo_program
https://gitee.com/chen_yi_ze/Windows_audio_talkback_demo_program
Android版源代碼:
https://github.com/cyz7758520/Android_audio_talkback_demo_program
https://gitee.com/chen_yi_ze/Android_audio_talkback_demo_program
版權
Speex:
https://gitlab.xiph.org/xiph/speex/-/blob/master/COPYING
WebRtc:
https://gitlab.com/webrtc-mirror/webrtc/-/blob/master/LICENSE
RNNoise:
https://gitlab.xiph.org/xiph/rnnoise/-/blob/master/COPYING
OpenH264:
https://github.com/cisco/openh264/blob/master/LICENSE
LibYUV:
https://github.com/lemenkov/libyuv/blob/master/LICENSE
感謝
感謝 WELEN、善書、陳國福 對 Speex、WebRTC 的指點!
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
Windows下音視頻對講演示程序(聲學回音消除、噪音抑制、語音活動檢測、自動增益控制、自適應抖動緩沖)(2021年11月10日更新)
Android 平台語音通話及回音消除、噪音消除研究(轉)
jitsi語音視頻問題排查
2021年8月11日
在服務器端錄制語音視頻
iOS UITextView自適應高度UITextContainerView抖動問題
回聲消除中的自適應濾波算法綜述
Python音視頻開發:消除抖音短視頻Logo和去電視台標
Android IOS WebRTC 音視頻開發總結(二九)-- 安卓噪聲消除交流
論android等平台回音消除解決方案
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM