• 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查找.

  • 相关阅读:
    06 PIE-Hyp图像修复
    在IIS中部署.NET Core WebApi程序
    深入学习ASP.NETCORE免费视频课程
    推荐设计10大接单平台
    Mysql—安装和使用(1)
    .Net WebApi接口之Swagger配置请求头apiKey验证
    .Net WebApi接口之Swagger设置让控制器上的注释显示
    执行dotnet *.dll启动项目,修改环境变量
    MySql下载及安装(Windows环境 )
    dev的grid封装组件,拖拽初始化属性
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/rtc21.html
Copyright © 2020-2023  润新知