视频直播推流拉流慢、卡顿解决方案

一、摘要

视频直播类App当前已经普遍采用CDN来实现访问加速,但还是经常遇到推拉流慢、卡顿的问题。这类问题一般是由于调度不精准、域名劫持、终端手机接入网络动态切换等因素导致,结合使用CDN和HTTPDNS可以比较完美解决此类问题。

二、视频直播经典加速架构

当前视频直播类App经典加速架构如下图所示:

图1 视频直播类App经典加速架构

经典加速架构中,推流阶段使用CDN就近接入实现推流加速,用户播放拉流阶段也可以使用CDN来做加速。由于CDN节点分布的广泛性与边缘性确保了客户能够就近接入与缓存。同直连源站相比,通过CDN加速直播推拉流取得了非常显著的加速效果。

三、经典架构中存在的问题

尽管已经采用了CDN加速,直播类App仍然经常出现访问慢、卡顿等问题,导致大量用户投诉,其主要原因是当前架构中存在以下几方面问题:

3.1 运营商Local DNS配置不合理导致无法就近接入

关于这个问题的描述参考文章App如何实现就近接入?如何改善调度不准问题?,那些年移动App域名解析踩过的坑,移动互联网时代,如何优化你的网络 —— 域名解析篇。

3.2 域名劫持

关于这个问题可以参考文章域名劫持与防范,那些年移动App域名解析踩过的坑,移动互联网时代,如何优化你的网络 —— 域名解析篇。

3.3 用户手机网络制式切换

假设用户A从移动4G切换到家中联通的wifi网络,仍然按照原先的CDN节点进行加速会出现跨ISP调度,访问质量差的悲剧事件。

四、解决办法

HTTPDNS + CDN

上述3个问题都可以通过接入HTTPDNS解决。

解决方案1: 终端源站配合的解决方案

图2 终端源站配合使用HTTPDNS的解决方案

下面通过推流阶段2个场景说明改进方案如何确保调度到最佳CDN节点:

case 1: Local DNS配置问题导致没有调度到最优节点的场景

  • Step 1: 用户手机上Local DNS配置不准确,域名解析阶段为域名dn返回的是CDN节点B的IP_b,而非最优的CDN节点IP IP_a。
  • Step 2: 推流的终端应用需要向CDN节点发起鉴权请求,CDN节点在收到鉴权请求后,需要提取终端的公网IP_c,然后除了转发鉴权相关信息到视频源站之外,还必须带上推流终端的公网IP_c 给源站。
  • Step 3: 源站收到鉴权信息和终端IP后,首先做鉴权工作,然后源站利用推流的域名dn和推流终端公网IP IP_c向HTTPDNS服务器发起请求,获取最优的CDN节点IP_a,并将IP_a回传给推流终端,告知推流终端IP_a是最佳接入节点
  • Step 4: 终端推流时可以直接向CDN IP_a推流,或者等到发现出现卡顿、慢时切换到IP_a

case 2: 用户网络制式切换(如移动4G切联通wifi)的场景

  • Step 1: 假设之前移动4G网络下最佳CDN节点是IP_b,用户网络制式切换成联通wifi后,最佳节点换成了IP_a。网络切换后,终端第一步仍然向CDN节点IP_b推流,此时会鉴权失败。
  • Step 2: 重复场景1的Step 2到Step 4,推流终端最终可以找到最佳CDN节点IP_a并通过IP_a推流。

解决方案2: 轻服务端解决方案

图3 完全基于终端调用HTTPDNS的方案

本方案非常清晰,当推流或者拉流出现服务质量问题(如慢、卡顿)时,立即使用HTTPDNS获取最新的最佳服务质量节点,并利用最新的节点进行推拉流。

另外,首次选用接入哪个CDN节点时也建议使用HTTPDNS来解析决定。

其他要点

请注意,用户网络制式切换时,本架构能够自动找出最优节点并顺利切换到最优节点。

其他因调度问题导致拉流、推流阶段慢、卡顿的问题都可以通过上述方案解决。

五、总结

视频直播类App经常遇到播放质量不佳、慢、卡顿等问题,会引起客户投诉和流失,使用HTTPDNS可以较好解决这类问题。

六、附录

阿里云HTTPDNS六大优势:

1、支持全网域名解析

  • 接口简单统一
  • 无需对接多家HTTPDNS

2、以IP方式对外提供服务,防止自身被劫持

3、AnyCast IP支持异地容灾

各地域使用同一个IP地址提供服务

4、接入延迟低且稳定

以北京为例,测试一下阿里云HTTPDNS的访问延迟:


图4 阿里云HTTPDNS服务器RTT延迟

5、支持https接口

6、提供Android SDK/iOS SDK,方便接入

时间: 2024-12-02 22:11:15

视频直播推流拉流慢、卡顿解决方案的相关文章

视频直播推流不成功如何排查

本博文将介绍,视频直播加速配置后,推流不成功要如何进行排查及解决: 1. 排查对应的域名是否进行直播加速配置 要进行直播推流,用户必须得开启直播加速->配置直播域名->直播推流,可以参考[快速开始]: 2. 排查获取到的推流URL地址是否准确 2.1 如何获取推流地址 直播加速配置成功后,用户可以在阿里云控制台->视频直播->域名管理->选择具体域名->点击管理->基本信息页面,获取得到对应的推流地址:rtmp://video-center.alivecdn.co

android 用viewPage做滑动页面出现卡顿

问题描述 android 用viewPage做滑动页面出现卡顿 页面有个ImageView把图片取消就不出现卡顿,请教下大神们这个要怎么解决卡顿 解决方案 能不能贴点代码看看,看看你是怎么实现的? 解决方案二: 你用的是v4包的吧!

CC视频助传媒业迅速开启视频直播

2010年新浪微博的异军崛起,赚足了互联网眼球.微博网民"原子弹"式的大爆发行为,微媒体的盛行,证明了在当今社会,"及时高效"是所有媒体网站都应做到并把握好的一条重要行为准则. 做资讯报道,人员写稿再快,摄影师拍照再迅速,也敌不过一台摄像机的直播速度.视频直播已经成为专业传媒网站不可或缺的报道方式,占据着重要的热点事件的报道权.从法网李娜夺冠的视频直播,人们第一时间获悉了这个令人激动的消息.而这样的报道,目前来讲,没有一家网站能靠图文资讯做到比视频直播更及时.更生动

视频直播Android推流SDK初体验

场景:使用阿里云直播产品如何进行推流播流,可以参考视频直播快速开始进行创建直播域名推流播流.那么移动端要如何进行推流呢,视频直播提供了Android.IOS推流SDK,用户可以使用对应的SDK进行推流,本文旨在让读者可以按照文章快速的应用Android推流SDK进行推流并且了解常见推流参数的设置. 1)Android Studio安装,下载Android Studio打开https://developer.android.com/index.html 2) 安装Android Studio 3)

ffmpeg处理rtmp/文件/rtsp的推流和拉流

ffmpeg处理rtmp/文件/rtsp的推流和拉流   本demo演示了利用ffmpeg从服务器拉流或本地文件读取流,更改流url或文件类型名称发送回服务器或存到本地的作用. 由于本程序只写了3个小时,还要忙别的,所以会有一些bug和优化的地方.不过demo的意义已经达到了.   [cpp] view plain copy   //info.h   #ifndef __INFO_H__   #define __INFO_H__      #include <string.h>    #inc

QT界面通过USB摄像头采集视频出现卡顿

问题描述 QT界面通过USB摄像头采集视频出现卡顿 硬件环境:A8开发板,屏幕S70,USB摄像头500W像素 软件 :Qt界面 问题描述:V4L2构架,界面显示是用定时器刷界面获得的图片,采集的图像尺寸是640x480就会出现卡顿,界面鼠标都会卡,采集320X240正常,帧率5 20 30 都设置了,没有改善卡顿问题,因此想问问题在哪里怎么修改?

视频-ffmpeg/dshow直播推流不成功

问题描述 ffmpeg/dshow直播推流不成功 ffmpeg -rtbufsize 1584k -f dshow -i video="USB 视频设备" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.11.122/publish/flv/channel 用了这个命令,然后老是失败,报这样的错,谁能给解决下,谢谢!

iOS9.1视频聊天会出现卡顿延迟

问题描述 集成了视频聊天功能,iOS8.4的设备视频聊天很流畅,iOS9.1的对方的图像会一直出现卡顿延迟,是因为SDK还没有完全支持iOS9.1吗,还是有些配置是iOS9.1需要的,我还没设置到,官方demo一样的问题 解决方案 demo也一样卡顿?demo是最新版本的吗,换个网络试一下.解决方案二:我们测试一下.解决方案三:我这边测试demo   并没有发现卡顿的现象,你那边网络情况怎么样.

流媒体测试笔记记录之————阿里云监控、OBS、FFmpeg拉流和推流变化比较记录

  OBS设置视频(512kbps)和音频(128kbps)比特率   阿里云监控结果:    使用FFmpeg拉流到Nginx 服务器测试比特率        第二次测试,修改视频和音频比特率   OBS设置   阿里云监控     Nginx 比特率变化    FFMPEG 拉流截图