拖動不準(zhǔn)
1. 問題現(xiàn)象
播放過程中,拖動進(jìn)度條后,實際播放的位置跟松開拖動時的位置相差很遠(yuǎn)。
2. 問題排查
由于直播流是實時產(chǎn)生和傳輸?shù)?,是不能拖動的,因此該問題主要出現(xiàn)在 “點播” 或者 “本地文件” 的播放。
2.1 基本概念
首先,我們要了解播放器拖動的基本原理:
視頻是由一系列圖像幀組成的,每一個幀都有對應(yīng)的時間戳。拖動,就是告訴播放一個時間戳,由它直接跳轉(zhuǎn)到指定的這一幀開始播放。
拖動到的時間點 = (進(jìn)度條的 progress / 進(jìn)度條最大值 100 )x 視頻總時長
2.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è)置得太大。
2.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ā)生。
直播專題問題排查-播放失?。ㄒ唬?/a>
直播專題問題排查-播放卡頓(二)
直播專題問題排查-首開慢(三)
直播專題問題排查-延時高(四)
直播專題問題排查-音畫不同步(五)
直播專題問題排查-黑屏、花屏、閃屏(六)
直播專題問題排查-播放雜音、噪音、回聲(七)
直播專題問題排查-拖動不準(zhǔn)(八)
直播專題問題排查-功耗高(九)
直播專題問題排查-馬賽克(十)