zoukankan      html  css  js  c++  java
  • Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题

    本文主要介绍音视频通话中收到第一帧图像后视频一直卡住的问题,文章来自博客园RTC.Blacker,转载请说明出处.

     

    因为苹果AppStore要求从2015年2月1日开始所有所有上架App必须支持arm64,https://developer.apple.com/news/,

    否则不予上架,所以花了不小力气才使得顺利编译成功.谁知道集成到自己产品的时候出问题了(采用自定义传输模块),具体现象如下:

    1, ios能正常显示对方图像,但对方只能显示第一帧.

    2, 抓包发现双方收发包都正常,说明传输模块没问题.

    3, 跟踪渲染和编解码模块,发现编解码和render也正常.

    4, 怀疑是下载的64位版本出问题了,甚至搭建AppRTCDemo环境测试.

     

    最后:仔细分析抓包结果,发现ios每次发过去的视频包大小都一样,有问题,正常情况下每个视频包不可能一样大.

    对着这个疑问我再自己回想整个传输过程, 终于搞明白了, 原来:

    rtp包成功发送包后返回的仍然是false,导致底层以为传输失败,所以不停地发送上一个包,具体代码调用流程如下:

    看上面的代码可知底层有判断包是否有成功发送,如果成功则移除,否则继续发送,后面还附有RTCP的处理逻辑:

    明白了这个原理,改这个BUG就很容易了,后面在自定义传输模块中处理的时候也会更注意.

    总结:以后查找类似问题的时候应先通过抓包分析大概原因,然后结合代码逻辑分析出可能出问题的模块,最后通过log或debug查找.

  • 相关阅读:
    MySQL索引管理及执行计划
    MySQL客户端工具及SQL讲解
    mysql数据类型
    mysq日志管理
    mysql连接管理及实例初始化配置
    mysql用户权限管理
    msyql5.6与mysql5.7安装区别
    mysql简介
    ASP.NET使用ImageMap控件
    ASP.NET Calendar(日历控件)
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/rtc21.html
Copyright © 2011-2022 走看看