标签:播放器 H265 frame videoQueue length 视频文件 self 卡顿
视频播放延时卡顿的问题从视频服务诞生以来就一直存在,即便是在技术发达的今天,延时卡顿问题仍然是不能完全解决的(不同视频流延时说明)。
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调用就可以非常快速地开发出属于自己的应用程序,进行第二次开发。
标签:播放器,H265,frame,videoQueue,length,视频文件,self,卡顿 来源: https://blog.51cto.com/u_15179958/2733094
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。