直播视频卡顿延迟时如何优化

news/2024/10/30 17:30:09/

视频直播视频缓存

【摘要】 试想一下,当你和朋友进行视频时,这时突然画面卡住不动了,而且声音变得断断续续,是不是会感到特别的尴尬?为了避免这些情况,那么在直播app开发过程中,针对于延迟,在技术上能对哪些方面进行优化呢?下面拓幻科技就来简单介绍下。一、编码优化首先,确保Codec开启了最低延迟的设置。Codec一般都会有低延迟优化的开关,对于H.264来说其效果尤其明显。另外,编码器一般都会有码控造成的延...

试想一下,当你和朋友进行视频时,这时突然画面卡住不动了,而且声音变得断断续续,是不是会感到特别的尴尬?为了避免这些情况,那么在直播app开发过程中,针对于延迟,在技术上能对哪些方面进行优化呢?下面拓幻科技就来简单介绍下。

一、编码优化
首先,确保Codec开启了最低延迟的设置。Codec一般都会有低延迟优化的开关,对于H.264来说其效果尤其明显。另外,编码器一般都会有码控造成的延迟,把它当成编码器和解码器比特流之间的缓存,在不影响视频质量的情况下,将其设置得尽可能小也可以降低延迟。还有,最好不要使用视频MJPEG的视频压缩格式,至少使用不带B帧的MPEG4视频压缩格式,最好使用H.264baseline profile这样一个简单的优化。这样一个简单的优化可以降低延迟,因为它能够以更低的码率编码全帧率视频。

二、传输协议优化
在服务端节点和节点之间尽量使用RTMP而非HLS协议进行传输,这样可以降低整体的传输延迟。如果终端用户使用RTMP来播放,尽量在靠近推流端的收流节点进行转码,这样传输的视频流要比原始视频流更小。此外,如果有必要,可以使用定制的 UDP 协议来替换 TCP 协议,省去弱网环节下的丢包重传可以降低延迟。

三、传输网络优化
在服务器节点中缓存当前GOP,配合播放端优化视频首开时间。还可以让服务端实时记录每个视频流流向每个环节时的秒级帧率和码率,用于实时监控码率和帧率的波动,然后针对此情况进行调节即可。

四、推流、播放优化
播放端缓存控制对于视频的首开延迟也有较大影响,如果仅优化首开延迟,可以在0缓存情况下在数据到达的时候立即解码。但如果在弱网环境下为了消除网络抖动造成的影响,设置一定的缓存也有必要,因此需要在直播的稳定性和首开延迟优化上找到平衡,调整优化缓冲区大小这个值。除了动态调整 buffer大小的策略之外,也可以利用实时监测的网络信息来动态调整播放过程中的码率,在网络带宽不足的情况下降低码率进行播放,减少延迟。
以上就是在直播app开发中,针对延迟方面,在技术层面所能做的优化。

视频云播放器秒开和播放流畅度优化

  一、概述
  目前,移动视频直播正处于一个高速膨胀的时期。游戏直播,秀场直播等APP铺天盖地。如何在千军万马中脱颖而出,直播的实时性和流畅性是重中之重。
  直播的实时性对于用户体验非常重要,主要体现在两个方面:秒开和延时。秒开是指用户点击播放到看到画面的时间非常短,在1秒之内;延时是指播放端的画面和主播端的画面的时间差,时间差越小,实时性越好,体验越佳。
  保证直播的流畅性是指在直播过程中保证播放不发生卡顿,卡顿是指在播放过程中声音和画面出现停滞,非常影响用户体验。造成卡顿的原因有几种情况:(1)推流端网络抖动导致数据无法发送到服务器,造成播放端卡顿;
  (2)播放端网络抖动导致数据累积在服务器上拉不下来,造成播放卡顿。
  由于从服务器到播放器的网络情况复杂,尤其是在3G和带宽较差的WIFI
  环境下,抖动和延迟经常发生,导致播放不流畅,播放不流畅带来的负面影响就是延时增大。如何在网络抖动的情况下保证播放的流畅性和实时性是保障直播性能的难点。针对上述提到的问题,下面会一一讨论。
  二、播放器秒开
  目前市面上有些APP点击播放后画面出现非常快,有些则需要等较长的时
  间。画面出现的越快,体验越好。那么怎样才能做到呢?
  图1所示为一个简单的直播流程,推流端将音视频数据推送到服务器端,播放端从服务器端拉取音视频数据进行播放。秒开主要可以从以下两个方面进行优化:
  (1)优化服务器策略
  播放器接入服务器请求数据的时间点的视频帧不一定是关键帧,那么需要等到下一个关键帧的到来,如果关键帧的周期是2s的话,那么等待的时间可能会在0~2s的范围内,这段等待的时间会影响首屏的加载时间。如果服务器有缓存,则播放端在接入的时候,服务器可以向前找最近的关键帧发给播放端,这样就可以省去等待的时间,可以大大的减少首屏的加载时间。
  (2)优化播放端策略
  播放端请求到的第一帧数据肯定是关键帧,关键帧能够通过帧内参考进行解
  码。这样播放端就可以在接收到第一个关键帧的时候就立即开始解码显示,而不需要等到缓存一定数量的视频帧才开始解码,这样也能减少首屏画面显示的时间。
  
  图1 直播流程
  三、流畅度优化
  由上文可知,视频在播放的过程中不发生卡顿,则流畅度越好,体验越佳。
  目前主流的直播协议是RTMP、HTTP-FLV和HLS,都是基于TCP的长连接。在播放的过程中,若播放端所处的网络环境在一个较佳的状态,此时播放会很流畅。若网络环境不是很稳定,经常会发生抖动,如果播放端没有做特殊处理,可能会经常发生卡顿,严重的甚至会出现黑屏。而移动直播由于其便捷性,用户可以随时随地发起和观看直播,我们无法保证用户的网络一直处于一个非常好的状态,所以,在网络不稳定的情况下保证播放的流畅度是非常重要的。
  为了解决这个问题,首先播放器需要将拉流线程和解码线程分开,并建立一个缓冲队列用于缓冲音视频数据。拉流线程将从服务器上获取到的音视频流放入队列,解码线程从队列中获取音视频数据进行解码播放,队列的长度可以调整。当网络发生抖动时,播放器无法从服务器上获取到数据或获取数据的速度较慢,此时队列中缓存的数据可以起到一个过渡的作用,让用户感觉不到网络发生了抖动。
  当然这是对于网络发生抖动的情况所采取的策略,如果播放端的网络迟迟不能恢复或者服务器的边缘结点出现宕机,则需要应用层进行重连或调度。

转载于:https://my.oschina.net/u/2944053/blog/760393

 


http://www.ppmy.cn/news/230770.html

相关文章

常见的电脑运行卡顿原因及解决方法

大家在日常使用电脑过程中,会发现多开几个文件就卡顿,其实很多时候都跟C盘长期不清理有关,C盘的内存被下载的软件安装包、页面文件、休眠文件、更新文件等一系列的文件占据。大的文件甚至能占到20-30G,驱动人生就为大家带来几种解…

CSS3 动画卡顿解决方案

前端时间用 animation 实现 H5 页面中首页动画过渡&#xff0c;很简单的一个效果&#xff0c;首页加载一个客服头像&#xff0c;先放大&#xff0c;停留 700ms 后再缩小至顶部。代码如下 <!DOCTYPE html> <html> <head lang"zh-cn"><meta char…

电脑为什么这么卡?6个方法处理电脑卡顿

你是否打开电脑就卡到不行&#xff1f;电脑的开机速度慢&#xff0c;就连打开网页也在转圈圈&#xff0c;一直加载不出来。世界上最痛苦的事莫过于此&#xff0c;想要好好工作&#xff0c;却一直加载不出网页。你知道电脑为什么这么卡吗&#xff1f;其实大多数的原因都在这篇文…

App卡顿的原因及解决方案

卡顿现象对我们来说是一个很烦恼的问题&#xff0c;也会给用户使用过程中带来很直观的不良感受&#xff0c;主要是由代码、内存不足等问题引起的常规卡顿和ANR异常&#xff0c;我们可以使用“友盟u-apm”这款工具进行监测&#xff0c;利用线上和线下相结合的方式全覆盖监测卡顿…

uniapp微信小程序视频播放卡顿

我小程序项目中需要去播放视频&#xff0c;但是我们的视频都是很长的 70分钟 90分钟 140分钟的这种&#xff0c;播放起来特别卡。 视频放在阿里云 开了cdn&#xff0c;但还是卡顿 我查了很多资料&#xff0c;因为视频码率太高了&#xff0c;微信小程序的视频组件不能播…

kodi在电视上播放视频卡顿的解决办法

看到网上说用KODI的JELLYFIN插件看视频效果不错。于是把早前刷过机的CM201S电视盒拿来装上了KODI 7&#xff08;本身是装不了17的&#xff0c;ANDROID4.4只能装到16的版本&#xff0c;网上有一版可以兼容android4的自编译版本我放到最下面了&#xff09;。结果发现看一些低码率…

APP卡顿原因

目录介绍 01.Android卡顿原理 02.复杂的视图树 03.频繁的requestlayout() 04.UI线程被阻塞 05.内存抖动 01.Android卡顿原理 通过对Android绘制机制的了解&#xff0c;我们知道造成应用卡顿的根源就在于16ms内不能完成绘制渲染合成过程&#xff0c;因为Android平台的硬件刷…

PS占用CPU太高,导致电脑异常卡顿

Adobe Photoshop&#xff08;PS&#xff09;&#xff1a;占用CPU太高&#xff0c;导致电脑异常卡顿 1.软件环境2.问题描述3.解决方案3.1.获取后台服务关闭工具3.2.永久禁止Adobe后台服务3.2.1.快速算法3.2.2.高级算法 4.结果预览 ⚡插播一条⚡&#xff1a;&#x1f34e;&#x…