注意!一對(duì)一聊天系統(tǒng)中你所不知道的秘密
時(shí)間:2022-05-08 21:21:02 | 來(lái)源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-05-08 21:21:02 來(lái)源:行業(yè)動(dòng)態(tài)
一對(duì)一聊天系統(tǒng)作為直播系統(tǒng)中的“明星產(chǎn)品”,受到了眾多軟件開(kāi)發(fā)商的喜愛(ài)和追捧。它區(qū)別于直播系統(tǒng),具有私密性強(qiáng)互動(dòng)性高的突出特點(diǎn)。但是在開(kāi)發(fā)過(guò)程中,并不是每個(gè)人都十分了解關(guān)于現(xiàn)代多媒體處理引擎中各個(gè)組件的細(xì)節(jié),所以今天來(lái)簡(jiǎn)單的分享下這方面的知識(shí)內(nèi)容。
1. 解析器和聲明文件解釋
基于HTTP的視頻流中,很多都是從描述文件開(kāi)始的。聲明文件中一般包括媒體服務(wù)器所需要細(xì)節(jié)的元信息,即視頻質(zhì)量、語(yǔ)言字母等。解析器從XML文件中獲取描述信息,然后再?gòu)倪@些信息中獲取正確的視頻信息,由于媒體服務(wù)器的類型很多,并不是所有的都能正確實(shí)現(xiàn),所以解析器有時(shí)候可能需要去處理一些額外的實(shí)現(xiàn)錯(cuò)誤。但是如果提取了視頻信息,解析器就會(huì)從中解析數(shù)據(jù),并用于構(gòu)件流式的視覺(jué)圖像且同時(shí)知道如何獲取不同的視頻片段。在一對(duì)一的直播流場(chǎng)景下,解析器必須以周期性的方式重新獲取聲明文件,以此獲得最新的視頻片段信息。
2. 下載器
即包裝處理HTTP請(qǐng)求原生API的模塊。不僅可以用于下載多媒體文件,而且必要的時(shí)候也可以用于下載聲明文件和密鑰。下載器在處理網(wǎng)絡(luò)錯(cuò)誤和重試方面擁有著十分重要的位置,而且還能收集當(dāng)前環(huán)境可用的帶寬數(shù)據(jù)。一般使用HTTP協(xié)議。
3. 流播放引擎
流播放引擎是解碼器和API交互的中央模塊,不僅能將不同的多媒體片段導(dǎo)入編碼器,而且還能處理多碼率的切換和播放時(shí)的差異性,比如卡頓時(shí)自動(dòng)跳幀或視頻切片之間的差異。
4. 資源質(zhì)量參數(shù)預(yù)估器
預(yù)估器可以從不同的維度來(lái)獲取數(shù)據(jù),比如跳幀數(shù)或視頻片段的下載時(shí)間??梢詫⑦@些匯總起來(lái)用于估算用戶的可用帶寬和CPU的計(jì)算能力。
5. ABR切換控制器
這是多媒體引擎中最為關(guān)鍵的也是我們最容易忽視的部分。它可以讀取預(yù)估器中輸出的帶寬和跳幀數(shù),根據(jù)自定義算法對(duì)數(shù)據(jù)做出判斷,決定播放引擎是否需要切換視頻的音頻或質(zhì)量。其中比較困難的點(diǎn)就是頻繁切換容易導(dǎo)致用戶產(chǎn)生很差的使用體驗(yàn)。
6. DRM管理器
目前大部分的付費(fèi)視頻服務(wù)都是在DRM管理的基礎(chǔ)上,且依賴于平臺(tái)設(shè)備。而多媒體引擎中的DRM管理器是更底層解碼器中解密API的包裝。它會(huì)盡量屏蔽瀏覽器或操作系統(tǒng)去實(shí)現(xiàn)細(xì)節(jié)的差異性,這個(gè)管理器一般會(huì)跟流媒體引擎鏈連接在一起。
7. 格式轉(zhuǎn)換復(fù)用器
每個(gè)平臺(tái)在編碼和封包方面都有一定的局限性,這一特性容易導(dǎo)致有些視頻片段需要在解碼之前就進(jìn)行格式轉(zhuǎn)換。比如hls.js可以使用MSE的格式播放HLS的視頻流。但是隨著現(xiàn)代flash性能的提升,它所帶來(lái)的性能損耗并不會(huì)給用戶帶來(lái)糟糕的使用體驗(yàn)。
由此我們可以看出,在一對(duì)一聊天系統(tǒng)中多媒體引擎也是具備很多不同的特點(diǎn)和組件的。而如果想要構(gòu)建出能夠兼容各個(gè)平臺(tái)的播放器,提供能自由替換的多媒體引擎也是十分重要的。
本文聲明原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處。