视频直播视频缓存

【摘要】 试想一下,当你和朋友进行视频时,这时突然画面卡住不动了,而且声音变得断断续续,是不是会感到特别的尴尬?为了避免这些情况,那么在直播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

直播视频卡顿延迟时如何优化相关推荐

  1. 直播卡顿原因详解及优化

    随着视频直播的发展,很多直播团队可能会遇到视频直播卡顿,频繁出现缓冲标志或者直播画面一卡一卡等情况.究竟是哪些原因造成了视频直播观看的卡顿情况呢? 又拍直播云结合实践经验,从设备.视频流.网络这三方面 ...

  2. 服务器flash卡的作用是什么原因,直播卡顿原因详解及优化

    随着视频直播的发展,很多直播团队可能会遇到视频直播卡顿,频繁出现缓冲标志或者直播画面一卡一卡等情况.究竟是哪些原因造成了视频直播观看的卡顿情况呢? 又拍直播云结合实践经验,从设备.视频流.网络这三方面 ...

  3. 直播卡顿原因详解及优化 1

    随着视频直播的发展,很多直播团队可能会遇到视频直播卡顿,频繁出现缓冲标志或者直播画面一卡一卡等情况.究竟是哪些原因造成了视频直播观看的卡顿情况呢? 又拍直播云结合实践经验,从设备.视频流.网络这三方面 ...

  4. 直播卡顿问题及优化方案

    本期内容主要包括四个方面:直播链路监控.卡顿质量指标.卡顿原因分析以及推荐优化方案. 上图是我们整个直播平台的链路示意图.我们的主播在推流端,通过手机.PC或者是专业的视频拍摄设备进行推流.常规使用R ...

  5. 区块链应用 | 用区块链颠覆视频直播,与视频卡顿、缓冲说再见!

    最近,虚拟货币红的发紫. Google Trends 显示关键词"Cryptocurrency"的搜索指数直逼100,虚拟货币快被大家搜爆了. (Google Trends,类似百 ...

  6. java线程太多卡顿_性能优化之卡顿延迟

    和你一起终身学习,这里是程序员 Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 1.UI 渲染简介 2.识别延迟 3.Visual insp ...

  7. android电视直播卡顿,电视直播时卡顿,除了网速还有哪些问题要解决?

    原标题:电视直播时卡顿,除了网速还有哪些问题要解决? 相信很多朋友都认为盒子卡顿全是网速造成的?但是事实确实如此吗?经过小编亲测发现,不同带宽下,电视盒子在不同时段均出现卡顿现象.因此说明电视直播卡顿 ...

  8. 抖音世界杯直播的低延迟是怎么做到的?

    动手点关注 干货不迷路 世界杯已经结束了,梅西带领阿根廷时隔三十六年之后终于如愿捧杯.抖音直播提供的 4K 超高清超低延迟看播能力给亿万观众留下了深刻的印象,决赛的 PCU 达到 3700w+,在这样 ...

  9. 腾讯云快直播——超低延迟直播技术方案及应用

    正文字数:4361  阅读时长:7分钟 随着直播业务的发展,在线教育,连麦直播.赛事直播等高实时性直播场景的出现,用户对于直播流畅度.低延迟等性能的要求愈加严苛.腾讯云直播技术高级工程师陈华成 从5G ...

  10. 微信小程序 RTMP 音视频 通话 ffmpeg_音视频常见问题分析和解决:HLS切片丢帧引起的视频卡顿问题排查...

    问题背景: 前两天看读者留言让再写写音视频问题排查方面的思路,前面大概写几篇:<音视频播放疑难杂症分析和解决 :序篇>.<音视频常见问题分析和解决:延时和抖动>.<记一次 ...

最新文章

  1. XShell连接Deepin
  2. petaPar培训文档
  3. GitHub App终于来了,iPhone用户可尝鲜,「同性交友」更加便捷
  4. 极大似然估计_极大似然估计、极大后验估计和贝叶斯估计
  5. JVM的GC简介和实例
  6. 1.18.2.9.查询优化、Blink planner、解释表
  7. python循环数组判断,python的数据类型、数组、条件判断、循环的基础知识
  8. linux-tar命令详解
  9. codeforces 158B-C语言解题报告
  10. 如何打开 Excel VBA 及 我的第一个代码
  11. 基于Prometheus的ego运动规划实现
  12. Android音视频开发之如何合并音频和视频文件?
  13. 从存活了1441年的企业,我们能学到什么?
  14. Defaulting to user installation because normal site-packages is not writeable
  15. 【2021最新综述】Deep Neural Approaches to Relation Triplets Extraction:A Comprehensive Survey
  16. springboot整合redis做缓存
  17. MYSQL优化自学笔记
  18. 浙大计算机跨专业考研心路历程记录
  19. java入门笔记合集(杂乱)(2)
  20. SpringBoot打成jar包时访问templates下的html出错或访问不到

热门文章

  1. 超尴尬婆婆对儿媳的新婚之夜的指导
  2. Celeste Lyn Paul
  3. Redis-Lua脚本(集成SpringBoot工程)
  4. 源码解析少儿编程微课程9:机械手臂模拟制作
  5. Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
  6. CC8编译报错:error #10099-D 解决方案(已解决)
  7. 手游服务器常用架构图
  8. python正则判断邮箱_Python实现正则表达式匹配任意的邮箱方法
  9. 厦门大学c语言2017,厦门大学2017年各专业录取分数线
  10. 《5G应用“扬帆”行动计划(2021-2023年)》征求意见稿发布