UT聊天室- UThome網際空間雷鋒網按:本文作者冼牛,即構科技市場運營總監,香港大學MBA,十年研發經驗,音視頻雲服務技術專家,專注連麥互動直播技術應用研究。
有好多次視頻社交行業的開發者提到,某廠商的視頻交友SDK測試的時候性能效果還可以,可是接入過程中和接入後就遇到各種各樣的坑:
1 .無法自行定製採集和渲染。2.無法獲得原始語音視頻數據,進行保存、前處理和編碼等定製化操作。
因此,視頻交友SDK的開發策略也要重點考量。
數據流動
視頻交友SDK選擇在數據流動的各個環節開放接口。語音視頻實時通訊本質上是語音視頻數據的實時流動,數據流通的各個重要環節如下:
…上圖展示了語音視頻數據從推流端流動到拉流端的各個環節:採集(包含語音3A前處理)、前處理、編碼、推流、拉流、解碼和渲染。
視頻交友SDK以上就是開發者負責的業務層,這七大環節都是在視頻交友SDK以下實現的。這七大環節都是被視頻交友SDK封裝好的。完全封裝的好處是一方面可以讓開發者專注業務層的邏輯,另一方面讓業務層和SDK完全解耦。不足是開發者一定程度上失去了對底層語音視頻數據的控制力。
有些視頻社交SDK廠商向開發者開放部分接口,也有廠商完全不開放任何接口。每一家視頻社交SDK廠商的開放策略都不一樣。使用視頻社交SDK的開放接口能獲得多少對底層語音視頻數據的控制力呢?
今天讓我們討論一下視頻交友SDK的開放策略。
採集
採集端是語音視頻數據的來源,包括但不限於硬體設備(麥克風和攝像頭)、螢幕共享、語音視頻文件播放和遊戲直播畫面等。
如果採集端是硬體設備,那麼視頻社交SDK可以驅動麥克風和攝像頭來獲得語音視頻數據。如果採集端不是硬體設備,那麼開發者要採用外部採集的方式讓SDK獲得語音視頻數據。
一般來說,有三種場景是需要進行外部採集的:
1)普通的硬體設備無法滿足業務需求,開發者已採用特殊的硬體設備來實現了大量業務。
2)開發者需要使用攝像頭完成額外的弁遄A和視頻社交SDK 的默認邏輯產生衝突,導致攝像頭無法正常使用。比如說,在視頻通話過程中,業務層要求中斷通話,用攝像頭來錄製短視頻。
3)語音視頻數據並非來自攝像頭和麥克風,而是來自虛擬設備、語音視頻文件或者現有的語音視頻流。比如說,語音視頻文件播放、螢幕分享和遊戲直播等。
在需要進行外部採集的場景中,視頻社交SDK要開放採集環節的接口來支持。否則,開發者就只能從攝像頭和麥克風等硬體設備直接獲取語音視頻數據,業務開發就會面臨極大的局限性。
視頻社交SDK開放了採集環節的接口,允雀}發者進行外部採集,開發者的自由度和掌控力一下子海闊天空。
然而凡事都有兩面:語音3A前處理是在採集環節完成的,因此,如果進行外部採集,開發者就要自行實現語音3A前處理。語音3A前處理包含回聲消除(AEC),噪聲抑制(ANS)和自動增益控制(AGC),也就是所謂的語音3A,是視頻社交行業公認的技術難題。
前處理
前處理是指對語音視頻原始數據在編碼之前進行的處理,包括語音3A和其它特殊的效果。語音3A是在採集環節完成的,除此以外還有其它的語音和視頻的前處理,將在本環節完成。
語音前處理是編碼前的語音特效處理,包括混響和變聲等。混響能讓聲音聽起來像來自曠野,變聲能讓人聲由男生變女生,或者產生電子聲特效,以此增強語音通話的趣味。
視頻前處理是編碼前的視頻特效處理,包括美顏、萌顏、掛件和濾鏡效果等,能讓畫面顯得妙趣橫生,以此增強視頻社交的樂趣。
如果視頻社交SDK開放了前處理的接口,那麼開發者可以自行實現語音和視頻的前處理模塊,或者對接第三方的語音和視頻的前處理SDK。否則,對開發者來說,視頻社交SDK以下的語音視頻處理都是黑盒子,業務層無法對其做任何控制。
筆者在即構科技獲得的數據表明,美顏和萌顏有著廣泛的市場需求,這兩個模塊是視頻社交SDK的標配。另外,市場上有一些優質的第三方美顏SDK,視頻社交SDK應該開放前處理的接口,讓開發者自由選擇是採用視頻SDK自帶的美顏弁遄A還是自行實現,或者對接第三方廠商的美顏SDK。只有這樣,開發者才真正擁有自由度和掌控力,進行積極的業務創新。
編碼
編碼這個環節留給開發者的餘地不多:開發者基本不會自行開發或者改造編解碼器。然而,一些有經驗的開發團隊仍然有自行編碼的需求,原因有如下兩個:
1)開發者對調製編碼器的參數來適配種類繁多的安卓機型十分有經驗和信心,決定自行編碼。開發者可以自行靈活地配置編碼器的參數,從而達到更好地適配各種安卓機型的效果。
2)開發者之前已經實現了大量調用編碼器的邏輯,而且相信自行編碼的效果更好。為了保護已有投資,開發者往往傾向於自行編碼。
需要特別注意的是,開發者自行編碼這種做法有得也有失:好處是開發者獲得了更大的掌控力和自由度;壞處是視頻社交SDK將無法為開發者提供碼率自適應的弁遄C
如果要理解背後的原因,讓我們先了解碼率自適應的原理:視頻社交SDK實時監控網絡狀況,使用算法預測網絡狀況的變化,然後根據預測結果動態調整編碼器的參數,編出和網絡狀況相適應的碼流。編出來的碼流的碼率、解析度、幀速等參數能讓實時通訊在當時的網絡情況下保障良好的QoS。
如果視頻交友SDK負責編碼,那麼它就能實現碼率自適應弁遄C如果開發者負責編碼,那麼視頻交友SDK就無法控制編碼器來編出適應網絡狀況變化的碼流,因此無法做到碼率自適應。
網絡傳輸
網絡傳輸環節是實時通訊的核心中的核心,通過FEC、ARQ、流控碼控和抖動緩衝等關鍵算法來實現實時傳輸架構,從而達到超低延遲的效果。
根據筆者的了解,還沒有廠商全面開放網絡傳輸環節。即構科技的做法是:支持開發者自行推流到即構的伺服器,然而拉流端拉流的時候必須要使用即構的視頻社交SDK。這樣既可以保持了SDK的開放性,兼容開發者原有的系統,又可以保障拉流端獲得低延遲的體驗。
這種做法背後的邏輯比較好理解:視頻交友SDK的核心價值是實時性,延遲超低。因為廠商在實現超低延遲上有專長,所以開發者才採用廠商的視頻交友SDK。如果廠商把這個核心環節開放給開發者自行實現,那麼廠商就失去了它的核心價值。
解碼
解碼環節和編碼環節相對應,把接收到的語音視頻流解碼然後渲染。解碼環節沒有什麼可以供開發者發揮的餘地。開發者一般沒有自行解碼的需求,廠商一般也沒有開放解碼環節的接口。
渲染
渲染就是把語音數據播放出來和把視頻畫面顯示出來。開發者對聲音數據的播放沒有額外的定製需求,然而對視頻畫面的顯示卻有很多定製的玩法。比如說,把多個視頻流渲染在同一個view裡面,讓畫中畫和大畫面相互切換,橫屏左右畫面進行對調等。
如果開發者想要實現一些更加酷炫的玩法,就需要自行進行渲染定製化了。如果視頻交友SDK開放了渲染環節的接口,那麼開發者可以進行渲染定製化。否則,只能接受視頻SDK自帶的渲染弁遄C開發者要進行定製化的渲染還有一個前提:語音視頻流沒有被混合,拉流端獲得的是多個分離的語音視頻流。如果語音視頻流已經被混合成一路流,那麼開發者能夠處理的就只有一個畫面,能夠創新的玩法就少了釵h。
分享一下筆者在即構科技獲得的客戶統計數據。在實時語音視頻的七個環節中,即構開放了採集、前處理、編碼和渲染四個環節。根據客戶的統計數據顯示,主要有如下四組選擇,而絕大部分客戶選擇了第一個組合。
…如果視頻交友SDK把七大環節完全封裝起來,開發者雖然不用操心,但是也失去了掌控力。因此,開發者在選型階段要進行慎重的分析。開發者可以從廠商的開放策略進行判斷,該SDK是否給予開發者足夠的掌控力進行業務創新?是否允雀}發者自由替換成其它廠商的SDK或者自行研發?
開發者把語音視頻實時通訊的能力託付給廠商,自然是經過一番衡量和取捨的決定。如果時間、成本和技術積累允釭爾隉A筆者相信大部分開發者都是希望自行研發的。
因此,廠商應該從開發者的角度出發,滿足開發者的需求,同時也打消開發者的顧慮,充分地開放語音視頻實時通訊各個環節的定製化接口。這樣才能真正不負開發者所託。
UT聊天室- UThome網際空間-乾貨:細數視頻交友SDK的開放策略
UT聊天室- UThome網際空間雷鋒網按:本文作者冼牛,即構科技市場運營總監,香港大學MBA,十年研發經驗,音視頻雲服務技術專家,專注連麥互動直播技術應用研究。
有好多次視頻社交行業的開發者提到,某廠商的視頻交友SDK測試的時候性能效果還可以,可是接入過程中和接入後就遇到各種各樣的坑:
1 .無法自行定製採集和渲染。2.無法獲得原始語音視頻數據,進行保存、前處理和編碼等定製化操作。
因此,視頻交友SDK的開發策略也要重點考量。
數據流動
視頻交友SDK選擇在數據流動的各個環節開放接口。語音視頻實時通訊本質上是語音視頻數據的實時流動,數據流通的各個重要環節如下:
…上圖展示了語音視頻數據從推流端流動到拉流端的各個環節:採集(包含語音3A前處理)、前處理、編碼、推流、拉流、解碼和渲染。
視頻交友SDK以上就是開發者負責的業務層,這七大環節都是在視頻交友SDK以下實現的。這七大環節都是被視頻交友SDK封裝好的。完全封裝的好處是一方面可以讓開發者專注業務層的邏輯,另一方面讓業務層和SDK完全解耦。不足是開發者一定程度上失去了對底層語音視頻數據的控制力。
有些視頻社交SDK廠商向開發者開放部分接口,也有廠商完全不開放任何接口。每一家視頻社交SDK廠商的開放策略都不一樣。使用視頻社交SDK的開放接口能獲得多少對底層語音視頻數據的控制力呢?
今天讓我們討論一下視頻交友SDK的開放策略。
採集
採集端是語音視頻數據的來源,包括但不限於硬體設備(麥克風和攝像頭)、螢幕共享、語音視頻文件播放和遊戲直播畫面等。
如果採集端是硬體設備,那麼視頻社交SDK可以驅動麥克風和攝像頭來獲得語音視頻數據。如果採集端不是硬體設備,那麼開發者要採用外部採集的方式讓SDK獲得語音視頻數據。
一般來說,有三種場景是需要進行外部採集的:
1)普通的硬體設備無法滿足業務需求,開發者已採用特殊的硬體設備來實現了大量業務。
2)開發者需要使用攝像頭完成額外的弁遄A和視頻社交SDK 的默認邏輯產生衝突,導致攝像頭無法正常使用。比如說,在視頻通話過程中,業務層要求中斷通話,用攝像頭來錄製短視頻。
3)語音視頻數據並非來自攝像頭和麥克風,而是來自虛擬設備、語音視頻文件或者現有的語音視頻流。比如說,語音視頻文件播放、螢幕分享和遊戲直播等。
在需要進行外部採集的場景中,視頻社交SDK要開放採集環節的接口來支持。否則,開發者就只能從攝像頭和麥克風等硬體設備直接獲取語音視頻數據,業務開發就會面臨極大的局限性。
視頻社交SDK開放了採集環節的接口,允雀}發者進行外部採集,開發者的自由度和掌控力一下子海闊天空。
然而凡事都有兩面:語音3A前處理是在採集環節完成的,因此,如果進行外部採集,開發者就要自行實現語音3A前處理。語音3A前處理包含回聲消除(AEC),噪聲抑制(ANS)和自動增益控制(AGC),也就是所謂的語音3A,是視頻社交行業公認的技術難題。
前處理
前處理是指對語音視頻原始數據在編碼之前進行的處理,包括語音3A和其它特殊的效果。語音3A是在採集環節完成的,除此以外還有其它的語音和視頻的前處理,將在本環節完成。
語音前處理是編碼前的語音特效處理,包括混響和變聲等。混響能讓聲音聽起來像來自曠野,變聲能讓人聲由男生變女生,或者產生電子聲特效,以此增強語音通話的趣味。
視頻前處理是編碼前的視頻特效處理,包括美顏、萌顏、掛件和濾鏡效果等,能讓畫面顯得妙趣橫生,以此增強視頻社交的樂趣。
如果視頻社交SDK開放了前處理的接口,那麼開發者可以自行實現語音和視頻的前處理模塊,或者對接第三方的語音和視頻的前處理SDK。否則,對開發者來說,視頻社交SDK以下的語音視頻處理都是黑盒子,業務層無法對其做任何控制。
筆者在即構科技獲得的數據表明,美顏和萌顏有著廣泛的市場需求,這兩個模塊是視頻社交SDK的標配。另外,市場上有一些優質的第三方美顏SDK,視頻社交SDK應該開放前處理的接口,讓開發者自由選擇是採用視頻SDK自帶的美顏弁遄A還是自行實現,或者對接第三方廠商的美顏SDK。只有這樣,開發者才真正擁有自由度和掌控力,進行積極的業務創新。
編碼
編碼這個環節留給開發者的餘地不多:開發者基本不會自行開發或者改造編解碼器。然而,一些有經驗的開發團隊仍然有自行編碼的需求,原因有如下兩個:
1)開發者對調製編碼器的參數來適配種類繁多的安卓機型十分有經驗和信心,決定自行編碼。開發者可以自行靈活地配置編碼器的參數,從而達到更好地適配各種安卓機型的效果。
2)開發者之前已經實現了大量調用編碼器的邏輯,而且相信自行編碼的效果更好。為了保護已有投資,開發者往往傾向於自行編碼。
需要特別注意的是,開發者自行編碼這種做法有得也有失:好處是開發者獲得了更大的掌控力和自由度;壞處是視頻社交SDK將無法為開發者提供碼率自適應的弁遄C
如果要理解背後的原因,讓我們先了解碼率自適應的原理:視頻社交SDK實時監控網絡狀況,使用算法預測網絡狀況的變化,然後根據預測結果動態調整編碼器的參數,編出和網絡狀況相適應的碼流。編出來的碼流的碼率、解析度、幀速等參數能讓實時通訊在當時的網絡情況下保障良好的QoS。
如果視頻交友SDK負責編碼,那麼它就能實現碼率自適應弁遄C如果開發者負責編碼,那麼視頻交友SDK就無法控制編碼器來編出適應網絡狀況變化的碼流,因此無法做到碼率自適應。
網絡傳輸
網絡傳輸環節是實時通訊的核心中的核心,通過FEC、ARQ、流控碼控和抖動緩衝等關鍵算法來實現實時傳輸架構,從而達到超低延遲的效果。
根據筆者的了解,還沒有廠商全面開放網絡傳輸環節。即構科技的做法是:支持開發者自行推流到即構的伺服器,然而拉流端拉流的時候必須要使用即構的視頻社交SDK。這樣既可以保持了SDK的開放性,兼容開發者原有的系統,又可以保障拉流端獲得低延遲的體驗。
這種做法背後的邏輯比較好理解:視頻交友SDK的核心價值是實時性,延遲超低。因為廠商在實現超低延遲上有專長,所以開發者才採用廠商的視頻交友SDK。如果廠商把這個核心環節開放給開發者自行實現,那麼廠商就失去了它的核心價值。
解碼
解碼環節和編碼環節相對應,把接收到的語音視頻流解碼然後渲染。解碼環節沒有什麼可以供開發者發揮的餘地。開發者一般沒有自行解碼的需求,廠商一般也沒有開放解碼環節的接口。
渲染
渲染就是把語音數據播放出來和把視頻畫面顯示出來。開發者對聲音數據的播放沒有額外的定製需求,然而對視頻畫面的顯示卻有很多定製的玩法。比如說,把多個視頻流渲染在同一個view裡面,讓畫中畫和大畫面相互切換,橫屏左右畫面進行對調等。
如果開發者想要實現一些更加酷炫的玩法,就需要自行進行渲染定製化了。如果視頻交友SDK開放了渲染環節的接口,那麼開發者可以進行渲染定製化。否則,只能接受視頻SDK自帶的渲染弁遄C開發者要進行定製化的渲染還有一個前提:語音視頻流沒有被混合,拉流端獲得的是多個分離的語音視頻流。如果語音視頻流已經被混合成一路流,那麼開發者能夠處理的就只有一個畫面,能夠創新的玩法就少了釵h。
分享一下筆者在即構科技獲得的客戶統計數據。在實時語音視頻的七個環節中,即構開放了採集、前處理、編碼和渲染四個環節。根據客戶的統計數據顯示,主要有如下四組選擇,而絕大部分客戶選擇了第一個組合。
…如果視頻交友SDK把七大環節完全封裝起來,開發者雖然不用操心,但是也失去了掌控力。因此,開發者在選型階段要進行慎重的分析。開發者可以從廠商的開放策略進行判斷,該SDK是否給予開發者足夠的掌控力進行業務創新?是否允雀}發者自由替換成其它廠商的SDK或者自行研發?
開發者把語音視頻實時通訊的能力託付給廠商,自然是經過一番衡量和取捨的決定。如果時間、成本和技術積累允釭爾隉A筆者相信大部分開發者都是希望自行研發的。
因此,廠商應該從開發者的角度出發,滿足開發者的需求,同時也打消開發者的顧慮,充分地開放語音視頻實時通訊各個環節的定製化接口。這樣才能真正不負開發者所託。