最佳化音質是直播電商原始碼不能忽略的
最近直播電商原始碼在使用WebRTC進行直播推流的時候,遇到了音樂音質不好的問題,對此進行最佳化後,音樂音質有很大提升,因此記錄下最佳化過程,分享出來
1. 關閉AEC,AGC,NS
因為WebRTC是專為實時視訊通話設計的,所以WebRTC的語音處理演算法也是專門為視訊通話最佳化的,為了進行正常的視訊通話,必須對語音進行AEC,AGC演算法處理,但是AEC對人聲有特殊處理,但是對音樂的背景聲音處理的不好,如果進行直播的時候,使用AEC,會對音樂的背景音產生消噪,從而影響直播電商原始碼的音質,可以關閉iOS端的硬體AEC,AGC,NS等演算法
關閉方法
在voice_processing_audio_unit.mm檔案中,修改
vpio_unit_description.componentSubType = kAudioUnitSubType_VoiceProcessingIO;
//修改為kAudioUnitSubtype_RemoteIO
vpio_unit_description.componentManufacturer = kAudioUnitManufacturer_Apple;
UInt32 enable_agc = 0;
result = AudioUnitSetProperty(vpio_unit_, kAUVoiceIOProperty_VoiceProcessingEnableAGC, kAudioUnitScope_Global, kInputBus, &enable_agc, sizeof(enable_agc));
2. 修改Opus編碼演算法
WebRTC中預設是採用Opus編碼,Opus編碼是由silk編碼和celt編碼合併在一起,silk編碼是由skype公司開源的一種語音編碼,特別適合人聲,適合於Voip語音通訊。celt和mp3,aac類似,適合於傳輸音樂。Opus編碼具備以下特點:
6 kb /秒到510 kb / s的位元率
取樣率從8 kHz(窄帶)到48 kHz(全頻)
幀大小從2.5毫秒到60毫秒
支援恆定位元率(CBR)和可變位元率(VBR)
從窄帶到全頻段的音訊頻寬
支援語音和音樂
支援單聲道和立體聲
支援多達255個頻道(多資料流的幀)
可動態調節位元率,音訊頻寬和幀大小
良好的魯棒性丟失率和資料包丟失隱藏(PLC)
浮點和定點實現
WebRTC中預設是使用Opus編碼的,在SDP中有標記
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
音訊取樣率是48000,音訊打包時間是10ms,單聲道,編碼採用的是Opus裡面的silk編碼,適合傳人聲,不適合傳音樂,所以如果需要使用WebRTC進行直播推流,直播電商原始碼需要對audio編碼進行修改
3. 修改聲道數
在a=ftmp這一行中加入stereo=1代表雙聲道,stereo=0代表單聲道,雙聲道一般用來傳音樂,從WebRTC程式碼中可以發現,當我們設定聲道數為2時,opus編碼內部將使用celt, celt適合傳輸音樂,程式碼如下:
config.application = config.num_channels == 1 ? AudioEncoderOpus::kVoip : AudioEncoderOpus::kAudio;
kVoip適合於語音通話,kAudio適合於傳輸音樂
4. audio碼流修改
在a=ftmp這一行中加入maxaveragebitrate代表接收方能接受的最大碼流,單位為bit。比如maxaveragebitrate=128000代表碼流為128kbps,提高audio碼流可以提升音樂音質
聲道數,碼流等引數,可以在sdp中統一修改
a=fmtp:111 minptime=10;useinbandfec=1;stereo=1;maxaveragebitrate=128000;maxplaybackrate=48000
總結:直播電商原始碼修改完WebRTC這些引數,再使用WebRTC進行直播推流時,音樂等背景音的音質有了大幅提升,也沒有異常的聲音忽高忽低的問題了
宣告:本文由雲豹科技轉發自zhangfan0021部落格,如有侵權請聯絡作者刪除
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70002045/viewspace-2789007/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 背景透明的實現,直播電商原始碼是怎麼做的原始碼
- 直播電商原始碼,簡述直播的實現原理原始碼
- 電商直播系統原始碼:電商app的型別都有哪些?原始碼APP型別
- 電商直播系統原始碼該如何突破?原始碼
- 語音直播系統原始碼開發語音直播系統部署搭建原始碼
- 語音直播系統原始碼與視訊直播系統原始碼哪些區別原始碼
- 優質一對一原始碼“輔助”解決音影片直播技術難點原始碼
- 直播電商原始碼,活動開始時間計時器原始碼
- 線上直播原始碼功能的完善及體驗最佳化是提高流量的致勝法寶原始碼
- 直播原始碼,直接在動態介面播放錄音原始碼
- 抖音大型直播的畫質最佳化實踐
- 直播帶貨小程式原始碼是什麼?如何鑑別其質量好壞?原始碼
- 語音直播系統開發,一套完整的語音直播系統原始碼必有的特色功能原始碼
- 直播電商原始碼,商品出售倒數計時的定時器效果原始碼定時器
- 直播軟體原始碼開發千萬不能忘的一個知識點原始碼
- 分析直播間原始碼的特點以及對音影片的處理方式原始碼
- 一對一直播原始碼,路由載入最佳化白屏原始碼路由
- 使用Docker容器不能忽略的10件事Docker
- 原來如此!直播原始碼技術是這樣做的,直播互動篇原始碼
- 直播帶貨原始碼,Android Studio實現電商引導頁原始碼Android
- 直播電商原始碼,android設定輪播圖轉場動畫特效原始碼Android動畫特效
- 直播電商原始碼,利用Kotlin+RocketMQ 實現延時訊息原始碼KotlinMQ
- 一對一直播原始碼的優勢是什麼?原始碼
- 8個容易被忽略但不能忽略的SD-WAN功能-VecloudCloud
- 直播帶貨app原始碼是如何應對市場挑戰的(附原始碼功能)APP原始碼
- 高質量的帶貨直播原始碼應該從這四點判斷原始碼
- 一對一社交原始碼在直播中最佳化技術的幾種形式原始碼
- 語音直播系統原始碼開發有哪些技術問題原始碼
- 直播原始碼功能大全原始碼
- 成品直播原始碼推薦,TableView/CollectionView 滑動頂部效果最佳化原始碼View
- 音影片編解碼技術在直播平臺中是如何運用的?
- 電商直播路在何方?店寶寶:找到了未來的電商直播模式模式
- 為了直播流暢,實現直播商城原始碼的轉碼原始碼
- 不能忽略的10個網頁設計元素網頁
- 直播系統原始碼的開發最佳化空間很大,抓住市場契機原始碼
- 實現app直播原始碼根據系統設定,最佳化電量的使用APP原始碼
- 直播系統開發鼎盛期,線上直播原始碼需不斷進行細節最佳化原始碼
- 在相親原始碼的多人音視訊聊天中插入現場直播的實現方式原始碼