热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

细数一对一社交源码调和延时卡顿问题的小技巧...

一对一社交源码作为开发过程中的“基础成员”,不仅开发搭建需要用到它,而且在解决延时和卡顿方面出现的问题也会用到它。虽然源码看起来并不起眼,

一对一社交源码作为开发过程中的“基础成员”,不仅开发搭建需要用到它,而且在解决延时和卡顿方面出现的问题也会用到它。虽然源码看起来并不起眼,但是系统搭建起来,再到后期app功能的实现都少不了源码“出力”。当然,如果源码的质量不高,那么后期的app成品在运行方面效果也不会太好。所以,优质的源码可以解决很多问题,接下来就跟大家简单分享一下延时卡顿方面的问题。

     先来科普一下相关的基础知识,关于I帧、B帧、P帧的知识。

I帧:表示关键帧,解码时只需要本帧数据就可以完成。

B帧:表示双向差别帧,B帧记录的是本帧与前后帧的差别。换句话说,要解码B帧,不仅需要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终画面。但是编解码时会比较耗费CPU,而且在直播中可能会增加直播延时,所以在移动端一般不使用B帧。

P帧:表示这一帧和之前关键帧的差别。解码时需要用到之前缓存的画面叠加上本帧定义的差别,生成最终画面。

     对于直播来讲,延时是非常需要注意的问题之一。那么为了减少直播的延时,通常在编码时不使用B帧。P帧B帧对于I帧都有着直接或者间接的依赖关系,所以播放器要解码一个视频帧序列并且进行播放,就必须先解码出I帧,然后B帧和P帧才能进行解码。所以在服务端进行关键帧的缓存,对直播的延时和其他方面都有着很大的影响。通常可以按照业务需求缓存帧序列,保持在缓存中存储至少两个及以上的关键帧,从而应对低延时、防卡顿等需求。

629b35841bed25dac9238fa2dd10bb3855d990b6

一般我们在分析一个直播app的好与坏,延时和卡顿是首要关注的两项指标。从理论上来讲,如果需要低延时,那么服务器端和播放器端的缓冲区都必须更短。而来自网络的异常抖动通常会容易引起卡顿,当业务可以接受较高的延时,服务端和播放端都可以有较长的缓冲区从而应对来自网络的抖动,从而提供更加流畅的直播体验。对于网络环境好的用户,这两项指标是可以同时保证的,但是对于网络环境不好的用户,又该如何解决延时和卡顿的问题呢?

可以从以下两个方面来进行优化:

1.      服务端提供灵活的配置策略,对于延时要求比较敏感的,可以在服务端保证关键帧的情况下,对每个连接维持一个较小的缓冲队列。对卡顿要求较高的直播场景,可以适当增加缓冲队列的长度,来保证直播播放的流畅性。

2.      可以对所有连接的网络情况进行一个智能检测,当网络状况良好时,服务端会缩小缓冲队列的大小,从而降低延迟。当网络状况较差时,服务端会增加缓冲队列的长度并且优先保证直播播放的流畅性。

    以上就是一对一社交源码在开发过程中解决延时和卡顿问题的小技巧,这也是我们经常提到的“一分价钱一分货”,优质的源码构建成的直播系统肯定出现问题的频率也比较少,所以在源码的选择上优先去选择优质源码还是十分必要的。



推荐阅读
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 显卡驱动对游戏的影响及其提升效果的研究
    本文研究了显卡驱动对游戏体验的提升效果,通过比较新旧驱动加持下的RTX 2080Ti显卡在游戏体验上的差异。测试平台选择了i9-9900K处理器和索泰RTX 2080Ti玩家力量至尊显卡,以保证数据的准确性。研究结果表明,显卡驱动的更新确实能够带来近乎50%的性能提升,对于提升游戏体验具有重要意义。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
徘徊在堕落边缘的魔鬼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有