本文主要介绍音视频通话中收到第一帧图像后视频一直卡住的问题,文章来自博客园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查找.

Android IOS WebRTC 音视频开发总结(二一)-- 黑屏问题的更多相关文章

  1. Android IOS WebRTC 音视频开发总结(四六)-- 从另一个角度看国内首届WebRTC大会

    文章主要从开发者角度谈国内首届WebRTC大会,支持原创,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,更多详见www.rtc.help. -------------------- ...

  2. 转:Android IOS WebRTC 音视频开发总结 (系列文章集合)

    随笔分类 - webrtc   Android IOS WebRTC 音视频开发总结(七八)-- 为什么WebRTC端到端监控很关键? 摘要: 本文主要介绍WebRTC端到端监控(我们翻译和整理的,译 ...

  3. Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  4. Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)

    本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...

  5. Android IOS WebRTC 音视频开发总结(六)-- iOS开发之含泪经验

    前段时间在搞webrtc iOS开发,所以将标题改为了Android IOS WebRTC 音视频开发总结, 下面都是开发过程中的经验总结,转载请说明出处(博客园RTC.Blacker): 1. IO ...

  6. Android IOS WebRTC 音视频开发总结(二四)-- p2p调用堆栈

    本文主要分析webrtc音视频点对点部分的代码结构,文章来自博客园RTC.Blacker,转载请说明出处. 前段时间在查一个偶尔断线的问题(这种问题最蛋疼,不好重现,只能凭经验去搞),所以理了下web ...

  7. Android IOS WebRTC 音视频开发总结(二三)-- hurtc使用说明

    本文主要介绍如何测试基于浏览器和手机的视频通话程序,转载请说明出处,文章来自博客园RTC.Blacker,更多详见www.blackerteam.com   很多人想测试浏览器(包括浏览器版本和桌面e ...

  8. Android IOS WebRTC 音视频开发总结(二十)-- 自由职业

    咋看标题感觉与WebRTC和音视频无关,其实有着很大的关联,文章来自博客园RTC.Blacker,转载请说明出处. 背景: 一方面因为对开发人员比较了解,不喜欢约束,喜欢自由自在,所以我们向往自由职业 ...

  9. Android IOS WebRTC 音视频开发总结(三二)-- WebRTC项目开发建议

    本文主要介绍WEBRTC开发过程中的一些现象,文章来自博客园RTC.Blacker,支持原创,欢迎关注微信公众号blacker,更多详见www.rtc.help 随着移动互联网和智能硬件的快速发展,音 ...

  10. Android IOS WebRTC 音视频开发总结(二九)-- 安卓噪声消除交流

    Android上的音质一直被大家所困扰和诟病,这里面有很多原因, 下面是最近一位前UC同行发邮件跟我交流的一些记录,供参考,支持原创,文章来自博客园RTC.Blacker,转载请说明出处. 以下文字来 ...

随机推荐

  1. git 常用命令 (git did not exit cleanly)

    Git常用操作命令收集: git clonegit git remote -v git remote add [name] [url] git remote rm [name] git remote ...

  2. python的装饰器

    什么是python的装饰器? 网络上的定义: 装饰器就是一函数,用来包装函数的函数,用来修饰原函数,将其重新赋值给原来的标识符,并永久的丧失原函数的引用. 在google上搜索下python 装饰器 ...

  3. 20145305 《Java程序设计》第4周学习总结

    教材学习内容总结 1.子类只能继承一个父类 2.检查多态语法逻辑是否正确,方式是从=号右边往左读:右边是不是一种左边(右边类型是不是左边类型的一种子类) 3.可以使用abstract标示该方法为抽象方 ...

  4. Run Configuration error:broken configuration due to unavailable

    希望大家一起来,毕竟大家都不会使用这个Androidstudio,一起扩展这方面的知识量 http://forums.opengamma.com/t/intellij-code-compiles-bu ...

  5. 二叉树的JAVA实现-二叉树的增删改查CRUD

    package org.lyk.interfaces; import java.util.List; public interface IBiTree<T extends Comparable& ...

  6. FreeMarker页面中获得contextPath

    要在ftl页面中使用contextPath,需要在viewResolver中做如下配置(红色部分): <bean id="viewResolver" class=" ...

  7. Mingyang.net:格式化Hibernate的SQL输出语句

    在sping与hibernate整合中可以这样的设置 <property name="hibernateProperties"> <props> <p ...

  8. 日志挖掘Logmnr

    日志挖掘 9.1 日志中数据用途 所有对用户数据以及数据字典的改变全部被保存在联机日志中.当然nologging,insert/*+append+/情况比较特殊除外,因此归档日志可以用来做数据库的恢复 ...

  9. Linux安装MySQL的两种方法

    转载:http://blog.csdn.net/superchanon/article/details/8546254/ 1.       运行平台:CentOS 6.3 x86_64,基本等同于RH ...

  10. 共享一个MVC通过NPOI导出excel的通用方法

    public static System.IO.MemoryStream ExportExcel<T>(string title, List<T> objList, param ...