直播视频卡顿

news/2024/11/9 5:00:06/

某直播App问题分析

一. 出现问题

  • 观看自己开播的直播间,经常出现卡顿,而且画面一卡6,7s,重新播放时会出现跳帧,卡顿频率也较高,导致该App可用性极低。

二. 分析

1. 直播架构分析

  • 根据log与抓包分析,其使用协议与后端架构如下:
  • 直播server
    • 国内:福建泉州(联通)、广东佛山、肇庆(电信)
    • 国外:如果ss登陆韩国,则访问韩国机房
  • 拉流CDN
    • 国内:潮州(联通)、揭阳(电信)
    • 国外:如果ss登陆韩国,则访问韩国机房
  • 推流协议
    • RTMP
  • 拉流协议
    • Http-flv
  • 观看端播放器
    • bilibili-ijkplayer

2. log分析

  • 跟进log,发现每当视频卡住和播放时日志如下:

    04-06 16:43:27.027 19089-25159/? D/IJKMEDIA﹕ ffp_toggle_buffering_l: start
    04-06 16:43:27.028 19089-25158/? D/AudioTrack﹕ pause() mState 0
    04-06 16:43:27.028 19089-25123/? D/IJKMEDIA﹕ FFP_MSG_BUFFERING_START:

    ...

    04-06 16:43:33.502 19089-25125/? D/IJKMEDIA﹕ ffp_toggle_buffering_l: end
    04-06 16:43:33.503 19089-25123/? D/IJKMEDIA﹕ FFP_MSG_BUFFERING_END:
    04-06 16:43:33.504 19089-25158/? D/AudioTrack﹕ start() mState 2

  • 部分ijk-player源码(ff_ffplay.c)


  • ijkplayer处理流程为
    • read_thread---> stream_component_open---> decoder_start---> video_thread--->ffplay_video_thread
    • log中,触发pause原因是:ffplay_video_thread在frame_decode时,如果不能从buffer中拿到新的frame,则触发pause,直到buffer满足播放要求后再start。
  • 分析结果
    • 按上面的代码,应用卡顿直接原因:本地buffer为空导致播放停止。但从主播端->观看端整个流程看,网络状况、服务器性能都可能导致/加剧问题。

3. TCP抓包分析

  • 由于App经常卡顿、且卡顿时间较长,为确定是否网络导致,在dump log同时,也抓了包:
  • 虽然有所卡顿,这段时间内数据包还是陆续有来的,卡6、7s不是很正常!根据上述代码,极有可能是App设置的IO buffer比较大,在网络环境较差情况下,触发start所需时间较长。

4. 其他分析

  • 在buffer方面,ijkplayer至少有2类buffer,一是上面提到的IO buffer,另外一类是显示buffer。
  • IO线程把数据读到后,再把数据喂给显示线程,上述2类buffer分别属于这2个线程。
  • 在使用App过程中,当log中输出D/AudioTrack﹕ start()后,画面马上更新(可能伴随跳帧),且无延迟,所以推测:
    • 该App显示buffer相当小
    • 有做额外的丢帧处理
  • 这估计是导致该应用播放频繁卡顿、且跳帧的原因!!!

三. 分析过程中的一些坑

1. Shawdowsocks

  • 本次FQ在OpenWrt上直接部署ss-local进行全局FQ,在抓包时候发现 推流 与 拉流 服务器皆为国内服务器,作为一个海外直播App,国外用户要FQ过来访问墙内服务器实在费解,遂在ss-server上ping相关域名获取ip,发现ss-server获取的ip是国外,按ss原理,DNS解析应在ss-server执行。后面经过排查,发现问题出在OpenWrt上,OpenWrt处理流程是:接到请求,DNS解析(此时,域名对应ip已经解析完毕),出口时走ss-local,到ss-server,访问之前DNS解析后的ip,所以之前是走了一圈国外再回国内,蛋疼!

转载于:https://www.cnblogs.com/lzh1234/p/6726122.html


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

相关文章

《直播疑难杂症排查》:播放卡顿

原文来自七牛云,感谢原作者。 1、播放卡顿的表现 播放卡顿的表现总结下来包括但不限于以下这些: 频繁出现缓冲播放不够流畅,画面一卡一卡的 2、常见播放卡顿问题排查 从代码层面来看,什么是卡顿?其实是指播放器渲染…

live555 rtsp直播卡顿马赛克优化

最近搞了个rtsp直播,初步是能用了,但是最终效果不是很好,客户不接受要求我们一定要继续优化。 原因是他们体验的时候发现会概率性出现马赛克和画面卡顿情况,经过我们测试验证,确实是有这个问题存在。 从原理上分析可能…

video 拉流卡顿_【video】视频直播推流拉流慢、卡顿解决方案

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

视频为什么会卡顿

视频为什么会卡顿,看看腾讯云如何解决这个问题的。 卡顿的原因无外乎三种情况: 原因 1:帧率太低 如果主播端手机性能较差,或者有很占 CPU 的后台程序在运行,可能导致视频的帧率太低。正常情况下每秒15FPS以上的视频流…

视频融合云平台视频播放卡顿的原因分析及解决办法

SkeyeVSS视频融合云平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,平台支持多类型设备、多协议方式接入,包括主流标准协议国标GB/T28181、RTMP、RTSP/Onvif协议等,以及厂家私有协议,如海…

Chrome html播放器卡顿,谷歌Chrome浏览器卡顿原因及解决办法

1.打开了系统设置,关闭浏览器后继续后台运行应用、硬件加速 谷歌浏览器右上角三点—设置—系统,或者直接在地址栏输入:chrome://settings/ 解决办法:去掉上图的勾选选项保存设置,重新启动chrome浏览器 参考:https://blog.csdn.net/u011135578/article/details/41737133 2…

如何关闭电脑自动更新?一招教你永久关闭!

百度安全验证https://baijiahao.baidu.com/s?id1749271752443309717

关于斗鱼和虎牙直播导致电脑及网络卡顿问题解决方案

最近,在打开虎牙看直播的时候,发现电脑莫名的卡顿了,然后发现只要一打开斗鱼或者虎牙,CPU的占用就会急剧升高,我都怀疑是不是他们在用我的电脑挖矿了,然后通过搜索引擎发现,大家普遍都是这样。究…