視頻播放延時卡頓的問題從視頻服務誕生以來就一直存在,即便是在技術發達的今天,延時卡頓問題仍然是不能完全解決的(不同視頻流延時說明)。
TSINGSEE青犀視頻研發團隊開發的H265播放器播放錄像文件時,偶爾也會出現卡頓情況。
分析問題
播放器是通過地址獲取數據,然后解碼再編碼給瀏覽器渲染,排查發現再編碼后的數據片段緩存較少,有時會導致錄像不流暢。調試發現數據片段緩存稍大些,播放就相對流暢很多。
原始緩存:
調大緩存:
找到H265播放器項目中DecodeWorker.js 並把緩存大小調整到160
if (!self.pause) { var frame = null; let ret = -1; if (!self.isFlvStream) { if (self.findKeyFrame) { while (self.videoQueue.length > 0) { frame = self.videoQueue[0]; if (frame.frameType && self.videoQueue.length < 160) { self.findKeyFrame = false; break; } self.videoQueue.shift(); } } else { if (self.videoQueue.length > 160) { self.findKeyFrame = true; } } if (self.videoQueue.length > 0) { if (frame == null) { frame = self.videoQueue[0]; } ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length); } } else { frame = self.videoQueue[0]; ret = onProcStreamData(frame.mediaType, frame.codecId, frame.frameType, frame.playTimeSec, frame.samplerate, frame.channelNum, frame.bitPerSample, frame.dat, frame.dat.length); } if (ret >= 0) { self.videoQueue.shift(); } }
EasyPlayer播放器
EasyPlayer播放器是TSINGSEE青犀視頻研發的H265播放器,如果有用戶想將EasyPlayer播放器集成進自己的流媒體平台,也是可以的,我們提供了非常簡單易用的SDK及API接口,用戶通過API調用就可以非常快速地開發出屬於自己的應用程序,進行第二次開發。