2016-11-09 47 views
2

我執行在右舷的媒體處理器,和我遇到的情況是在我的鈷客戶端應用程序不緩衝內容積極就夠了。這導致它只是空着一個空的緩衝區。當平臺的緩衝區被耗盡時,什麼是正確的Starboard事件觸發?我應該以某種方式冒出一個錯誤,或者是否有信號可以讓客戶端應用程序請求更多數據?處理緩衝區溢出的最佳方法?

回答

5

當有溢,玩家執行應當以內部暫停視頻播放處理。對於最終用戶來說媒體播放會暫停,而媒體堆棧的狀態仍被視爲「正在播放」。這使玩家有機會在再次播放之前接收一些視頻數據。在參考實現中,PlayerWorker通過暫停音頻播放來實現此目的。由於媒體時間和視頻播放與音頻時間相關,因此整個播放器都會暫停播放。

當新數據到來時,玩家要播放自動恢復。玩家實施也可以選擇增加預卷/恢復所需的緩衝量以避免未來的欠載,但通常不需要。

至於你提到你的應用程序不斷運行到欠載運行。即使可以適當地處理欠載運行,解決這個問題也可以獲得更好的用戶體驗。

我檢查的第一件事是,測試環境有要求的視頻質量足夠的網絡帶寬。如果該應用針對網絡非常差的市場,請考慮緩衝更多媒體數據。

如果應用欠載運行時有足夠的網絡帶寬,則表明沒有處理媒體數據速度不夠快。一個好方法是檢查是否kSbPlayerDecoderStateNeedsData被激發足夠頻繁和SbPlayerWriteSample()被稱爲沒有太多的延遲,因爲這是跨邊界的右偏移動媒體數據的唯一地方。