咱们计划为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

相关文章
相关标签/搜索