咱們計劃爲EasyDSS定製開發一款超低延時的EasyPlayer Flash播放器

現象

最近團隊在作EasyDSS RTMP流媒體服務器開發的過程當中,遇到了一個關於延時累積的問題,先大概描述一下過程:git

EasyRTMP Android進行長時間的RTMP推流壓力測試,在EasyDSS的web客戶端中進行Flash播放,起初進行播放的開始階段,延時是極小的,大概在0.4s左右,但隨着播放過程的延長,咱們會觀察到一個現象,一旦客戶端出現一次緩衝或者停頓,網頁播放的時延就會增長,並且是不會恢復的,最終愈來愈長愈來愈長!github

EasyDSS轉發原始延時

判斷與結論

因而咱們就一直在懷疑究竟是EasyRTMP推流端的緩衝形成了延時,仍是服務器端的累積形成了延時,仍是播放器端的緩衝區形成了延時;web

  • 咱們先從排查推流端入手,咱們發現每一次的從新開始播放,延時都會是極小的0.4s左右,播放過程延時累積,那麼這樣就能夠排除是推流形成的延時了,由於低延時的數據已經推送到服務器了;服務器

  • 再排查服務器端,那只有從EasyDSS的發送緩衝區入手了,經過這個過程當中的打印,緩衝區確實是在增長,那麼爲何會增長呢?markdown

  • 播放器端咱們進行了調整,將播放器的緩衝區調整到了0.5s,但一樣仍是會累計延時,那麼是否能夠判斷就是服務器形成的延時?網絡

因而,咱們又進行了更進一步的測試,咱們將服務器端進行修改,對推流的時間戳進行人爲的調整,將時間戳調小(好比視頻原來每幀的時間間隔是40ms,咱們改到20ms),讓flash播放器根據新的時間戳播放,保持一種快進的模式,這樣播放器就一直處於一種消費>生產的狀況,一直都處於飢餓模式,本地不會緩衝數據,結果發現,延時確實一直很低,並且快產快消,比較穩定的低延時;性能

反覆的討論和驗證,咱們得出結論:測試

播放器在播放的過程當中,遇到網絡抖動的狀況或者數據緩衝區的狀況,仍是會一如既往地將原有的音視頻數據正常播放完成,那麼中間這個緩衝的時間和卡頓的時間就累計起來了,而咱們播放器緩衝區開的就算比較小,也沒法解決整個延時累積的問題,由於播放器緩衝區始終保持一個飽滿狀態,那麼播放器對服務器的數據讀取就沒那麼迅速,也致使了服務器端的緩衝區累積;視頻

解決思路

相似一樣的過程在以前咱們的EasyPlayer RTSP播放器中也曾遇到,而RTSP播放器做爲了一個Real Time的協議,須要保證的是播放的完整和低延時,因此,當時在緩衝區和播放的過程當中,作了一個播放追幀的效果,也就是說當緩衝區比較大的時候,播放會倍數快進播放,追趕延時的累積,這樣會給用戶一個比較好的低延時體驗,那麼,咱們的EasyPlayer flash播放器的開發也會採用這種方式,直播過程當中採用追幀的效果,保持一個比較hungry的狀態!開發

關於EasyDSS流媒體服務器

EasyDSS商用流媒體服務器解決方案是一套集流媒體點播、轉碼與管理、直播、錄像、檢索、時移回看於一體的一套完整的商用流媒體服務器解決方案,EasyDSS高性能RTMP流媒體服務器支持RTMP推流,同步輸出HTTP、RTMP、HLS、HTTP-FLV,支持推流分發/拉流分發,支持秒開、GOP緩衝、錄像、檢索、回放、錄像下載、網頁管理等多種功能,是目前市面上最合理的一款商用流媒體服務器!

詳細說明:http://www.easydss.com/

點擊連接加入羣【EasyDSS流媒體服務器】:560148162

關於EasyPlayerPro

EasyPlayerPro是一款全功能的流媒體播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP等多種流媒體協議播放、支持本地文件播放,支持本地抓拍、本地錄像、播放旋轉、多屏播放等多種功能特性,穩定、高效、可靠,支持Windows、Android、iOS三個平臺,目前在多家教育、安防、行業型公司,都獲得的應用,廣受好評!

EasyPlayerPro:https://github.com/EasyDSS/EasyPlayerPro

點擊連接加入羣【EasyPlayer & EasyPlayerPro】:544917793

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

相關文章
相關標籤/搜索