直播的时效性保证了良好的用户体验,根据经验在交易环节,延迟越低转化效果也会越好。传统的直播延迟问题已经成为了一个不容忽视的问题,高延迟不仅破坏了用户的观看体验,也让主播难以实时获取到用户的反馈。为了进一步优化直播时效体验,我们需要对产生延迟的原因以及整个交互链路有个清晰的认知,才能稳定的实施相关方案。
创新互联公司网站建设提供从项目策划、软件开发,软件安全维护、网站优化(SEO)、网站分析、效果评估等整套的建站服务,主营业务为成都网站设计、网站制作、外贸营销网站建设,重庆App定制开发以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。创新互联公司深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
我们团队内部观察了其他电商平台的延时,其中 TOP1 的平台,端到端的延迟在 3s 左右,而得物在 5s 左右,提升空间还是比较明显,我们需要进一步明确具体原因。
在得物的直播场景中有添加秒杀商品的环节,秒杀商品的倒计时是实时进行的,假如直播画面有将近8s的延迟才能追上,在这一过程中无论是用户还是主播沟通中都会存在gap。在直播过程中用户在延迟高的场景中提问了但是主播迟迟没有反馈,在这个期间用户有可能退出直播间或者跳过这个商品,这个结果无论是对主播或者是对交易转换都不太能接受。
A、B两个用户可能在看某一个直播间,A用户可能很早就进直播间了,而B用户是新进来的,但是B用户的延迟却比A用户的低了几秒,A用户看到可能就会怀疑自己手机、网络、APP是不是哪个有问题,造成不好的体验反馈。
要搞清楚延迟是如何产生的,我们势必要了解到其中哪些程序可能出现延迟,并且是可优化的。
主播 --> 云服务器 --> CDN节点 --> 用户
云服务器 --> 主播: 直播内容转码、压缩等处理
CDN节点 --> 用户: 直播内容分发到多个边缘节点
用户 --> 设备: 接收直播内容 --> 显示直播内容
(部分解释来源第三方文献)
主要包含编码延迟以及发送缓存引入的延迟,这个环节的延迟优化空间不多,虽然通过调节编码器参数可有效降低编码延迟,但带来的是画质的损失,同时也影响压缩效果,因此多数集中在优化弱网传输,出发点是为了提供用户观看流畅体验,而不仅限于降低延迟
对于直播平台而言,实时转码是非常必要的一项技术。通过对视频流进行实时转码,可以将高清视频流优化为多个分辨率,满足不同终端设备的兼容性和带宽需求,并且减小了网络传输的开销。但是,实时转码过程中必然会带来一定的延迟,这是因为:
因此,针对转码延迟的问题,需要在减小延迟和提高视频质量之间进行权衡。采用一些高级的转码算法、减少图片质量降低对视频画质的伤害、优化编码参数等方法,但也同样会带来画质与压缩率的损失,因此这部分延迟需要根据实际场景综合来考虑,如果对延迟要求很高,可以略微调整下。
不考虑回源的情况,这个环节主要影响延迟的是 gop cache 策略,各类 CDN 厂商称呼都不一致,有的又叫(RTMP、FLV、HLS...)Delay,即在边缘节点缓存一路流最新的几个 gop(一般媒体时长平均为 5 ~ 7s),目的是为了在拉流请求建立时,可以有媒体数据即时发送,优化首帧和卡顿,这样也就导致了播放端收到的第一帧数据就是 5 ~ 7s 前的旧数据,第一帧的延迟就达到了 5 ~ 7s,这个环节是端到端延迟过大的根因。
在直播拉流播放过程中,为了提高播放的流畅度和用户体验,通常进行缓存一部分buffer。缓存是指在播放器开始播放之前,预先加载一定量的视频数据到本地缓存中,以便后续播放时能够快速读取缓存中的数据,避免卡顿和不流畅的现象。这种“预加载”的缓存被称为“缓存buffer”。
缓存buffer大小不同可能会导致延迟时间也不同,常见的缓存buffer大小为2秒或者更小,这意味着播放器会预先从视频源中加载2秒到本地缓存中,等播放器播放到接近缓存末尾时,会再次预加载2秒内容到缓存中,以保证播放的流畅性。
固定延迟是指播放器在接收到网络数据之后,为保证数据正常播放而需要等待一定的固定时间,一般用于防止视频播放过程中的卡顿和不流畅。例如,如果设置的固定延迟为1秒,那么从数据包到达手机端再到数据包真正播放出来这个过程,就需要多等待1秒左右的时间,这就是固定延迟产生的效果。
通常情况下,播放器会自动根据当前的网络环境动态调整缓存buffer大小和固定延迟时间,以保证最佳的播放效果。不过,如果网络环境不太理想,仍有可能出现视频卡顿和不流畅的情况,此时可以通过配置和优化缓存buffer大小和固定延迟时间来改善播放效果。
假设用户的设备硬件性能较为低端,在接收和解码直播数据时出现卡顿等问题。为此,可以通过优化码流参数,如对码率、分辨率等进行调节,使其更加适应用户设备的硬件性能;或者采用尽量少的传输协议,以减少解码时间和相关计算资源的使用。
其中任何一个环节出现问题,都有可能导致直播过程中产生延迟。为了减少这种延迟,可以优化各个环节的处理效率,并优化网络传输等方面的参数和设置。
在直播的传输环节里,对延迟影响大的主要是CDN的传输、转码、分发和播放缓冲,使用实时的转码模式,转码器引入的延迟一般在 300ms 以内甚至更短。CDN 的分发环节也会带来一定的延迟,但相对也较短。而为了对抗网络抖动引入的播放缓冲区引入的延迟播放缓冲引入的延迟常常会有 5s 甚至更多。
采用端到端的测试方法,即计算播放端到推流端的时间差作为延迟。
找一个在线的精确到毫秒的时钟:http://www.daojishiqi.com/bjtime.asp
A. 打开上述网页,推流端对准该网页或者抓取窗口
B. 播放端:到对应直播间观看对应的时间差
对A、B(屏幕)进行对比,截图计算时间差。
编码的时候把时间戳写到 SEI 信息中,播放器通过拉流成功后解析 SEI 信息然后与当前时间戳做差值对比。
SEI 需要涉及到推拉流侧底层开发,所以暂选的方法一进行测试,测试结果发现现阶段最保守以及快速的解决方式是直接调整云直播控制台的延迟档位。如果要调整延迟档位,那势必要了解到调整之后会带来什么影响以及变化,这其中就涉及到了 GOP 相关的知识点。
顾名思义 GOP cache,是一组存于 CDN 服务端的 GOP 缓存,GOP cache 越大延迟影响也越大。通过了解 GOP cache 我们能在直播延迟链路中能做出更精准的优化。GOP cache 是某一方厂商提出的名词,各大 CDN 的称呼也不一致,有的云厂商又称之为(RTMP、FLV、HLS...)Delay。与推流 GOP 或者 转码播流 GOP 配合,就形成完整的端到端延迟。
而 GOP 是一组连续的视频帧,通常包括一个I帧(关键帧)和若干个P帧(预测帧)和B帧(双向预测帧)。在直播过程中,如果 GOP 的大小过大,会导致接收端在等待I帧的到来时需要等待相对较长的时间,这就会增加视频的延迟。因此,降低 GOP 大小可以在一定程度上减小视频的延迟。
不算完全算误导,一方面不是所有直播流都走转码,甚至修改 GOP。另一方面推流 GOP 对流传输效率可能存在一定影响。主要描述没有把转码 GOP 的影响和区别包括进去。
得物使用的直播缓存的单位是 duration
在直播延迟中,缓存的单位可以是时间(duration)或大小(size)。
以时间(duration)为单位的缓存指的是,在视频采集、编码和推送到云服务器的过程中,视频数据会先被存放在缓冲区中,等待一定的时间(也就是缓存时间)后,才会被推送到CDN分发节点上进行播放。
以大小(size)为单位的缓存则是根据缓存容量进行控制,视频在采集、编码和推送到云服务器的过程中,每当视频数据达到一定的大小,就会被推送到CDN分发节点上进行播放。
在实际的直播过程中,通常会综合使用时间和大小两种缓存单位来进行延迟控制。如果对延迟比较在意,可以适当增加缓存时间和大小,保证接收端有足够的缓存时间进行播放,减少出现卡顿和停顿的概率。如果实时性比较重要的话,可以适当降低缓存时间和大小,缩短延迟时间,保证直播的实时性。
需要注意的是,缓存时间和缓存大小是直播平台优化延迟的两个关键因素。合理的设置能够显著减小延迟,提升用户体验。但同时,缓存过多或者过少都可能会带来一定的问题,因此需要根据实际情况进行调整和优化。
不固定,且没有 GOP 数量的概念,是以时长论大小,取决于 CDN 侧的 buffer ,不管 buffer 多大,发送数据是按照至少一个 delay, 最多 delay + gop 发送的,流数据是不断产生新数据的,发送的时候内容不断在滑动。对延迟没有直接的影响关系。
RTMP :低(2s)中(4s)高(8s)
FLV :低(2s)中(4s)高(8s)
计算延迟方式:
[RtmpDelay, RtmpDelay + GOP] 这里的 GOP,转码前用的推流设置的 GOP,转码后用的转码模板配置的 GOP
自定义模版配置的 1080p,gop = 10s = 200桢 的情况下 理论上最小最大值就下面的几种范围
[2,12],[4,14],[8,18]
flv 播放的话,delay设置2秒,gop 设置1秒,理论上端到端的延迟基本在3秒左右,如果码率高的情况下,还得适当提升 delay 的值保证直播的流畅。另外除了 CDN 缓存延迟以外,播放器缓存策略也需要考虑。
如果要实现稳定2秒,可以考虑超低延迟直播的方案。
调整完之后端到端延迟预计能从 5s-8s 降低至 3s-5s
理论上来说降低推流 GOP,是对延迟有帮助的,将 GOP 降至1秒,则每秒会推送一个关键帧,接收端就可以在接收到关键帧后直接播放,进一步减小延迟。同时,由于每秒会推送更多关键帧,对视频的画质和稳定性也会产生积极的影响。
推流 GOP 的大小不是唯一的影响直播延迟的因素。还有视频编码、推流服务器的 配置、网络环境等因素都会对延迟产生影响,因此只有在综合考虑到各种因素后,合理设置推流GOP大小,才能够最大程度地降低直播延迟。
也就是说增加拉流侧的消费速度,在有需求的情况下配合倍速追桢的策略,加快视频的播放速度,在某一个阀值中开启或者停止。
推流侧在推流的过程中把关键帧打入时间戳到 SEI 信息里去
拉流侧在拉流的过程中解码成功之后把对应的 SEI 信息里的时间戳解析出来
然后根据服务端的在线时间对比两者之差,决定播放器的播放器倍速,例如 (1.0 ~ 1.4s) 之间逐渐增加和递减,最终在符合预期的延迟时间停止加速消费
常见的直播播放器缓存buffer大小为2秒,主要是出于减少卡顿和停顿的概率,提升用户体验的考虑。
播放器缓存buffer是指播放器预先缓存一定量的视频数据进行播放。当网络状况不好、视频流传输中断或者延迟过高时,播放器缓存就会派上用场,保证播放过程的连续性和流畅性。
一般来说,播放器缓存buffer大小会根据网络环境和带宽等因素而不同。如果缓存过小,会导致卡顿和停顿;如果缓存过大,会增加延迟,影响实时性。经过优化,常见的直播播放器缓存buffer大小为2秒左右,既能够保证播放过程的流畅性,又不会过度增加延迟。
不同的直播平台(PC、移动端)、不同的网络(WIFI、4G、5G)和设备(不同厂商)可能会有不同的播放器缓存 buffer 大小设置,因此在实际使用中需要根据具体情况进行调整和优化。
阿里云的 RTS(Real-Time Streaming)和字节的 RTM(RTM,Real Time Media)都是超低延时商业化方案,有着使延迟降低至<=1s的效果, 在具体的应用场景和功能方面都差不多。
以上两种商业化方案都需要配合播放器SDK使用,且 RTM 需要配合火山 CDN 环境使用,两者费用也不一样。需要针对我们当前架构和现状作出权衡考虑。
常规直播推流底层协议是基于TCP的,理论上极限在3秒左右已经是最低的了。
而 QUIC(Quick UDP Internet Connections)是一种基于用户数据报协议(UDP)的协议,它在传输上相比于传统的传输层协议(TCP)有以下优势,导致延迟更低:
综上所述,由于QUIC协议在连接建立、报文传输、多路复用和网络故障处理等方面都有着比. TCP协议更好的表现,因此它可以提供更低的延迟,更高的速率以及更可靠的连接。另外一个使用QUIC(UDP)也需要综合考虑一些问题,它带来更低的延迟后,会不会有一些其他方面受到负面影响,例如拉流成功率、稳定性问题之类的。所以最终实施方案还需要做更详细的测试权衡利弊。
直播延迟问题涉及的因素较多,包括推流端和播放端的缓存设置、传输协议、GOP控制等方面。为了解决延迟问题,在实际开发中,为了达到更好的用户体验,我们需要对这些因素进行综合考虑和优化,在不断的实践和实验中寻找最佳方案,通过综合使用这些技术方案,可以更好地提高直播平台的实时性和观看体验。
新闻名称:得物直播低延迟探索
分享路径:http://www.shufengxianlan.com/qtweb/news49/553049.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联