音视频不同步

1、问题现象:iOS版本在网络环境差的情况下,会比较容易出现音视频不同步的问题

2、问题分析:

经多次测试发现,观看时间越长,音频延迟的越严重;

然后查看Log,发现音频接收缓存队列中并没有堆积buffer;

        2017-12-20 11:22:14.072473+0800 Kalay[465:106760] channel.audioQueue.count:[0] channel.avChannel:[0]
        2017-12-20 11:22:14.077151+0800 Kalay[465:106760] channel.audioQueue.count:[0] channel.avChannel:[0]

   这说明接收到的buffer就是延迟的,
    猜测可能是某些原因阻塞了音频接收线程,从而导致了音频延迟;   

3、问题解决:

发现在网络环境比较差的情况下,avRecvAudioData会经常返回-20012的错误码,

else if (readSize ==AV_ER_DATA_NOREADY) {

//      usleep(2*1000);

usleep(100);

}

得到-20012后,接收线程会执行usleep,看来接收线程就是被这儿给阻塞住了,

sleep 2000ms时间太长,但拿掉usleep会使cpu达到100%的使用率,于是就改成sleep 100ms;

另外,在SDK 3.1.5.19之后的版本中也有加入音视频同步机制,保证接收到的音频和视频数据时间戳上有同步。

目前客户测试下来,没有再反馈此问题;

IOS_音视频不同步问题相关推荐

  1. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS

    用FFMPEG SDK进行视频转码压缩的时候,转码成功后去看视频的内容,发现音视频是不同步的.这个的确是一个恼火的事情.我在用FFMPEG SDK做h264格式的FLV文件编码Filter的时候就碰到 ...

  2. 音视频的同步原理——老文章,比较清晰

    http://blog.csdn.net/beyond_cn/article/details/20310177 1.   音视频同步的原理 2.  音视频同步的较正方法 3.  音视频同步时遇到的问题 ...

  3. python中使用ffmpeg进行视频指定时长截断(解决剪切后音视频不同步的问题)

    1. 获取视频时长 有两种方式获取视频总时长: python-ffmpeg( 获取的是视频总秒数 ) video_time = float(ffmpeg.probe(video)['format'][ ...

  4. php音视频同步,FFMPEG转码音视频不同步情况总结

    [导读]使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同步,下面我们就来根据问题出现的原因,对所遇到的音视频不同步做一个分类. 使用FFMPEG转码一年半的时间,遇到了各种情况的音视频不同 ...

  5. 互动协作白板与音视频实时同步技术实践

    本文整理自即构科技互动白板技术负责人陈晓聪在LiveVideoStack的线上分享,内容主要围绕白板与音视频的同步和白板的多端实时互动两个角度,深度解析即构在互动白板方面的技术探索实践. 文 / 陈晓 ...

  6. 音视频不同步问题的原因和解决方案

    FAQ: 在播放视频的时候,尤其是网络视频或者高清视频,会有视频画面和对应的声音信息不同步的问题,这样的问题原因在哪里?如何解决? Resolve: 避免音视频不同步现象有两个关键-- 一是在生成数据 ...

  7. 【线上分享】互动协作白板与音视频实时同步技术实践

    在线教育不同于线下教学,内容与互动更多是通过电子白板的方式呈现,互动白板已逐渐成为在线教育产品不可或缺的组成部分.而在实际应用中,受网络环境影响,设备性能.教学方式差异等多种条件的约束,仍存在白板与音 ...

  8. c语言 将音视频时钟同步封装成通用模块

    自定义播放器系列 第一章 视频渲染 第二章 音频(push)播放 第三章 音频(pull)播放 第四章 实现时钟同步 第五章 实现通用时钟同步(本章) 第六章 实现播放器 文章目录 自定义播放器系列 ...

  9. iOS完整推流采集音视频数据编码同步合成流

    1.实现原理 采集: 采集视频帧使用AVCaptureSession,采集音频帧使用Audio Unit 编码: 编码视频数据使用VideoToolbox中vtCompresssion硬编,编码音频数 ...

最新文章

  1. u3d中texture2D的Advanced设置解析
  2. Python编程核心内容 ---- Function(函数)
  3. SANTENDO的大脑训练计划
  4. python将姓王的都改成老王_Python老王视频习题答案
  5. 从数据库里读值往TEXT文本里写
  6. TVM:在树莓派上部署预训练的模型
  7. 经济学家忽悠老百姓的“万能公式”
  8. WebBrowser一点心得,如果在Javascript和Winform代码之间实现双向通信
  9. html5画安卓机器人,HTML5用户笔画形状检测机器人
  10. 颜色(color)、字体(Fonts)管理(颜色的 hex 表示)
  11. latex希腊字母表
  12. IOS从零开始之_objective-c初探上
  13. 基于at89c51单片机的led数字倒计时器设计c语言,课程设计(论文)-基于AT89C51单片机的LED数字倒计时器设计.docx...
  14. mysql 1264_关于MySQL的1264错误处理及sql_mode设置
  15. python 人像素描_基于python实现把图片转换成素描
  16. opencv--颜色识别
  17. python运维工程师前景及待遇_做运维工程师有前途吗?
  18. 丢人!35岁软件工程师:因涉嫌欺诈150万美元抗疫贷款被捕
  19. django文件上传功能的实现
  20. 《论文阅读》Point Cloud Completion by Skip-attention Network with Hierarchical Folding

热门文章

  1. 计算机桌面右下角网络连接的图标不见了,电脑右下角本地连接图标不见了 这种找回方法既简单有轻松...
  2. html5将文字生成图片
  3. 用python 实现发射爱心
  4. 函数周期表丨时间丨表丨CALENDARAUTO
  5. Your configuration specifies to merge with the ref ‘refs/heads/develop‘from the remote, but no such
  6. L2-021 点赞狂魔 - java
  7. 1.3 计算机网络的功能
  8. 电脑mac电脑,达龙云电脑mac版
  9. 后台数据管理——firebase和野狗
  10. SSMS Sql Server 身份验证(设置用户名和密码)方式登录