国产主播8888页|三级成人无码视频|禁品AV在线观看|福利1区2区做爱|亚欧成人黄色视频|欧美色图亚洲性爱|久久久久综合蜜臀|国产综合亚洲夜夜摸视频网|激情欧美福利视频|色色综合伊人久久v∧无码

直播間新手常見技術(shù)問題解答--拖動不準(zhǔn)


直播間新手常見技術(shù)問題解答--拖動不準(zhǔn)


現(xiàn)象:播放過程中,拖動進(jìn)度條后,實際播放的位置跟松開拖動時的位置相差很遠(yuǎn)。


由于直播流是實時產(chǎn)生和傳輸?shù)?,是不能拖動的,因此該問題主要出現(xiàn)在點播或者本地文件 的播放。


1 基本概念

首先,我們要了解播放器拖動的基本原理:

視頻是由一系列圖像幀組成的,每一個幀都有對應(yīng)的時間戳。拖動,就是告訴播放一個時間戳,由它直接跳轉(zhuǎn)到指定的這一幀開始播放。

拖動到的時間點 = (進(jìn)度條的 progress / 進(jìn)度條最大值 100 )x 視頻總時長


2 關(guān)鍵幀間隔太大

由于解碼器必須從 I 幀開始解碼,才不會出現(xiàn)花屏現(xiàn)象,因此,播放器通常會尋找離 seekTo 視頻幀最近的一個關(guān)鍵幀,從該關(guān)鍵幀開始解碼播放。


假設(shè)關(guān)鍵幀間隔(GOP)是 3s,那么關(guān)鍵幀的時間點排列如下:

0s, 3s, 6s, 9s


如果拖動到 4s 的位置,那么播放器就跳轉(zhuǎn)到第 3s 的關(guān)鍵幀開始解碼播放,因此,會產(chǎn)生一定的誤差。

關(guān)鍵幀的間隔越大,那么這個誤差也就越大。因此,為了更準(zhǔn)確地支持拖動,建議不要把關(guān)鍵幀間隔設(shè)置得太大。

3 直播丟幀

丟幀的情況多發(fā)生在直播場景,由于主播端的網(wǎng)絡(luò)抖動或者內(nèi)存不足,導(dǎo)致不得不被迫丟掉一些視頻幀,而為了保證客戶端解碼后不出現(xiàn)花屏,丟幀往往伴隨著一整個 GOP 的丟棄。

當(dāng) GOP 丟失后,部分關(guān)鍵幀的間隔時間點就會變得更大了,從而導(dǎo)致拖動不準(zhǔn)。


為了避免這種情況,建議推流端開啟動態(tài)碼率,在網(wǎng)絡(luò)不好的時候,主動降低碼率,快速發(fā)送掉緩沖區(qū)中累積的視頻幀,從而減少丟幀的情況發(fā)生。


4 發(fā)熱

導(dǎo)致機(jī)器功耗高,發(fā)熱嚴(yán)重的根本因素,無外乎就是一點:CPU/GPU 占用率高,所以,我們首先要分析下,哪些因素會導(dǎo)致 CPU/GPU 占用率高。


5 數(shù)據(jù)量太大

直播主要由:視頻采集 -> 視頻處理(剪裁、美顏、濾鏡) -> 編碼 -> 推流 這些環(huán)節(jié)組成。

在這整個流程中,決定數(shù)據(jù)量大小的因素有哪些呢 ?


視頻的尺寸(例如:1280 x 720 的圖像,明顯要比 320 x 240 的圖像處理起來費(fèi)勁)


視頻的幀率(例如:每秒 30 幀,明顯要比每秒 15 幀,處理起來費(fèi)勁)


因此,在不影響業(yè)務(wù)體驗的情況下,適當(dāng)減少視頻的尺寸和幀率,是可以明顯降低后續(xù)環(huán)節(jié) CPU/GPU 的負(fù)荷的,從而顯著降低功耗。


6 大量的格式轉(zhuǎn)換

不同的模塊對數(shù)據(jù)格式的要求,往往有差異,比如 Android 攝像頭出來的數(shù)據(jù)大多是 NV21 的,而編碼器一般要求 I420 格式的數(shù)據(jù);再比如 ffmpeg 解碼的視頻往往是 YUV 格式,而渲染顯示往往需要 RGB 格式,等等。


我們要盡可能減少不同格式之間的數(shù)據(jù)轉(zhuǎn)換,或者盡可能利用 GPU 來處理一些復(fù)雜的格式轉(zhuǎn)換,比如利用 OpenGL 直接渲染 YUV 格式的數(shù)據(jù),而不是用 CPU 做一次 YUV -> RGB 的轉(zhuǎn)換,就是一個不錯的選擇。


7 對圖像進(jìn)行放大操作

前面文章有提到,非常不推薦把一個小尺寸的圖片 -> 放大 -> 大尺寸圖片,這樣很容易出現(xiàn)馬賽克。


其實,這樣的設(shè)計,不僅僅是容易出現(xiàn)馬賽克,而且在圖像放大的過程中,由于涉及到復(fù)雜的插值運(yùn)算,也會非常消耗 CPU。

同理,圖像的縮小或者剪裁,同樣也會消耗一定的 CPU,只不過相比于圖片放大要好點。

因此,最好的辦法,就是小心選擇攝像頭的預(yù)覽分辨率以及推流的尺寸,盡可能讓兩者保持一致,這樣,才能最大化地節(jié)省 CPU 的消耗。


8 軟編/軟解

這個原因或許大家都懂,軟編/軟解靠的是 CPU,非常耗性能,而硬編/硬解是使用專門的硬件編解碼器模塊,會顯著降低 CPU 的負(fù)擔(dān),相對而言,會省電很多。


只不過需要小心各種 Android 機(jī)型兼容性問題,對于某些奇葩設(shè)備,還是加入硬編/硬解黑名單的好。

9 其他方面

當(dāng)然,導(dǎo)致功耗高的因素還有很多,這里就不一一展開說明了,列舉如下:

人臉識別/美顏/濾鏡,對 CPU/GPU 消耗很大

代碼邏輯中過多的 memory copy 操作

后臺線程頻繁喚醒手機(jī)訪問網(wǎng)絡(luò)或者讀寫 SDCard

App 的一些動畫特效

————————————————

版權(quán)聲明:本文為CSDN博主「步基」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/wangbuji/article/details/121661187

================================

【新聞】

999999.jpg

微信圖片_20230804194631.jpg

   中國e直播帶貨供應(yīng)鏈金融13306003307(V同),
一件代發(fā)共享云倉
:主播減去了自己先采購囤貨的問題,可以無壓力的開播賣貨。主播只要選定生廠商的抖音小店產(chǎn)品鏈接或快手小店產(chǎn)品鏈接,在自己直播間上了鏈接就可以賣,賣完由廠家小店訂單結(jié)算,廠家網(wǎng)店直接收款;直播帶貨主播直接分傭金;MCN機(jī)構(gòu)直接分管理費(fèi)。

     中國E直播帶貨供應(yīng)鏈機(jī)構(gòu)協(xié)調(diào)廠家按規(guī)則48小時內(nèi)一件代發(fā)!

1633584154541554.png