直播疑難雜症排查(9)— 拖動不準

本文為 《直播疑難雜症排查》系列的第九篇文章,我們重點看看播放視頻時拖動不準的問題。

1. 問題現象

播放過程中,拖動進度條後,實際播放的位置跟鬆開拖動時的位置相差很遠。

2. 問題排查

由於直播流是實時產生和傳輸的,是不能拖動的,因此該問題主要出現在 「點播」 或者 「本地文件」 的播放。

2.1 基本概念

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

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

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

2.2 關鍵幀間隔太大

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

假設關鍵幀間隔(GOP)是 3s,那麼關鍵幀的時間點排列如下:

0s, 3s, 6s, 9s

如果拖動到 4s 的位置,那麼播放器就跳轉到第 3s 的關鍵幀開始解碼播放,因此,會產生一定的誤差。

關鍵幀的間隔越大,那麼這個誤差也就越大。因此,為了更準確地支持拖動,建議不要把關鍵幀間隔設置得太大。

2.3 直播丟幀

丟幀的情況多發生在直播場景,由於主播端的網路抖動或者內存不足,導致不得不被迫丟掉一些視頻幀,而為了保證客戶端解碼後不出現花屏,丟幀往往伴隨著一整個 GOP 的丟棄。

當 GOP 丟失後,部分關鍵幀的間隔時間點就會變得更大了,從而導致拖動不準。

為了避免這種情況,建議推流端開啟動態碼率,在網路不好的時候,主動降低碼率,快速發送掉緩衝區中累積的視頻幀,從而減少丟幀的情況發生。

3. 小結

關於拖動不準的問題排查大致就介紹道這裡了,有任何疑問歡迎來信 lujun.hust@gmail.com 交流,另外,歡迎關注我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。


推薦閱讀:

假如梅蘭芳先生開直播,會產生什麼影響?
一個可以在線看直播電視的網站,手機電腦皆可
現在一些遊戲平台的主播非常賺錢,怎麼克服心理不平衡感?
直播問答技術分析
如何看待宮本狗雨?

TAG:音视频 | 直播 | 播放器 |