《直播疑难杂症排查》系列已经更新了 7 篇,我们为用户分析了视频直播过程中出现的问题,并一一作出排查。此次我们侧重于直播中的音频,以便给用户带来更好的听觉享受。

《直播技术详解》系列文章之后,我们推出了这个新的系列《直播疑难杂症排查》,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播领域的开发者们。


本系列会涵盖的内容包括但不限于如下一些主题:
- 播放失败
- 直播卡顿
- 首开慢
- 延时高
- 音画不同步
- 马赛克严重
- 播放黑屏、花屏、绿屏
- 播放杂音、噪音、回声
- 点播拖动不准
- 直播发热问题
- 其他问题(待续)

本文为 《直播疑难杂症排查》系列的第八篇文章,我们重点看看直播过程中出现的杂音、噪音和回声等问题。

相比于视频而言,音频要敏感得多,视频画面有噪点、马赛克都还是可以勉强被接受,而声音一旦有任何瑕疵,人耳都会特别容易感觉到,而且难以忍受。

问题现象

常见的音频问题现象描述如下:
- 电流音,爆音,滋滋声或者嘟嘟声
- 声音断断续续,听不清楚
- 回声,能听到自己说话的声音

问题排查

1.参数配置问题

上面也有提到,音频是一个特别敏感的东西,涉及到许多参数配置,一旦配置不太匹配,就会导致声音听起来非常诡异(比如:采样率是 32000Hz 的音频,给播放器配置为 8000Hz 或者 44100Hz,就明显会出现音频慢放或者快放的效果)。

常见的音频参数和基本原理,可以参考文章:《Android音频开发(1):基础知识》

我们只需要注意的是,无论是采集和播放,都要给系统的 API 以及第三方的库配置正确的参数,如:采样率、位宽、声道数等等。

2.代码层面的原因

常见的代码层面的问题有如下几种:
- 音频 buffer 大小不匹配,一段 1024 bytes 的音频,放到了 2048 bytes 的数组,导致尾部有随机数
- 音频 resample 重采样的算法问题,导致采样出来的数据出了问题
- Android 的 ByteBuffer 取出数组,是不能直接用 .array() 方法的,而需要用 .get() 方法
- iOS 系统,其他 app 通过系统 API 更改了 AudioSession 采样率的配置

3.网络波动

视频是一帧一帧连续的图像构成的,在播放过程中,如果无法按时渲染,则会出现卡顿的效果;如果丢失几帧画面,则会出现快进效果。

而音频是流式的,虽然也被切分为了一个个音频帧,但如果无法按时播放或者连续丢失较多的音频帧,则会明显听到断断续续的声音出现。特别是在弱网、丢包率高等不稳定网络环境下,很容易出现这种情况。

4.回声消除

回声一般出现在同时有音频的采集和播放的场景,比如:连麦互动、混音返听等等,采集到的音频通过扬声器又播放出来了,同时又被采集了进去,从而产生了回声或者啸叫声。

这样的场景下,一般需要通过系统的回声消除 API,或者第三方回声消除库(如:speexdsp,webrtc 等)进行处理。

注意:很多 Android 机型硬件自带的回声消除效果并不是很好。

5.混音越界

音频的 PCM 数据,通常用 short 数组来存放,当我们做一些多路音频的混音功能的时候,如果不注意处理 short 类型的大小越界,则往往带来爆音的问题。下面是一段参考 webrtc 的混音代码,专门针对混音越界做了简单处理,可以参考参考:


推荐阅读:视频直播技术详解

如何解决直播中的播放杂音、噪音、回声问题 | 直播疑难杂症排查相关推荐

  1. [转载]如何解决直播中的播放杂音、噪音、回声问题 | 直播疑难杂症排查

    继<直播技术详解>系列文章之后,我们推出了这个新的系列<直播疑难杂症排查>,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播 ...

  2. 在线教学直播中做ppt文档的在线直播(在线课常多画面直播)教程

    原创教程 本教程介绍的是ppt文档的直播过程,相关的场景一般是用在,比如在线云课堂,ppt文档在线直播,在线课常多画面直播等这类的直播中. 跟其他的视频直播不一样,ppt直播时ppt的画面并不是以视频 ...

  3. 现场抽奖小程序_小程序直播怎么引爆现场,小程序直播中 4大互动促转玩法

    小程序直播影响一场直播转化效果有4个重要因素,一看直播现场互动氛围如何,观众观看时长.参与互动意愿是否强烈:二看直播间活动是否有吸引力,能否激发用户购买欲望促进裂变转化.小编结合众多直播实战品牌案例, ...

  4. 安防摄像头RTSP/Onvif协议网页无插件直播视频流媒体服务器EasyNVR之按需直播如何有效利用最大上行带宽

    介绍 一般情况下,直播默认的播放方式是非按需直播,但很多情况下,不少用户会选择按需直播.按需直播能够减少带宽流量和服务器性能占用,最优的提高服务器的使用效率. 下面我们来系统介绍下EasyNVR中按需 ...

  5. 抖音直播前需要准备什么,抖音直播带货详细流程步骤丨国仁网络资讯

    2020年,抖音直播进行得如火如荼,但还有很多人不清楚抖音直播流程. 例如,做抖音直播之前要准备什么?怎样才能开始直播?直播流程怎么走?是先讲产品还是先抽奖?是先做脚本还是先选品?是先做预热还是先直播 ...

  6. 直播疑难杂症排查(8)— 播放杂音、噪音、回声问题

    本文为 <直播疑难杂症排查>系列的第八篇文章,我们重点看看直播过程中出现的杂音.噪音和回声等问题. 相比于视频而言,音频要敏感得多,视频画面有噪点.马赛克都还是可以勉强被接受,而声音一旦有 ...

  7. 如何解决直播中黑屏、花屏、闪屏问题?10 分钟搞明白

    播放失败 直播卡顿 首开慢 延时高 音画不同步 马赛克严重 播放黑屏.花屏.绿屏 播放杂音.噪音.回声 点播拖动不准 直播发热问题 其他问题(待续) 首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流 ...

  8. 用户的眼睛没毛病!10 分钟搞明白如何在直播中解决黑屏、花屏、闪屏问题

    「黑屏.花屏.闪屏」经常出现在直播应用中,除了网络问题,在直播过程中的黑屏.花屏.闪屏却有很多技术原因,这篇文章将全方位为你解决直播中的「黑屏.花屏.闪屏」问题. 继<直播技术详解>系列文 ...

  9. 如何在直播中解决黑屏、花屏、闪屏问题 | 直播疑难杂症排查

    首先我们要明白,黑屏.花屏.闪屏等问题,可能是推流端的问题,也可能是播放器的问题,遇到这些现象,我们要第一时间用别的播放器(如 VLC,ffplay)试试,如果都出现同样的问题,那么多半是流本身的问题 ...

  10. 如何实现在直播中播放音频文件

    在我们看直播的时候,经常会在直播过程中听到有掌声.口哨声.背景音乐等音效,那么这些声音特效是如何实现的呢大家有没有想过?anyRTC下面就为大家简单介绍一下如何实现在直播过程中播放音频文件. 功能描述 ...

最新文章

  1. 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
  2. spring框架实现一个学生管理系统
  3. Golang 计算MD5值示例
  4. beautifulsoup4
  5. 二值mask图像 + RGB原图 生成可视化分割结果; 从二值mask获取分割轮廓点
  6. PBOC中文件结构,文件类型解析
  7. 科技计划项目数据管理过程模型
  8. 在maven 2工程中加入iTextAsian支持(maven添加自定义jar包到本地仓库)
  9. 机器学习-西瓜书、南瓜书第五章
  10. springboot 控制台输出错误信息_springboot(6)——整合日志
  11. React Native创建项目等待时间长解决
  12. cat3 utp是不是网线_网线UTP-CAT5、UTP-CAT5e、UTP-cat6产品简介讲解
  13. 微信小程序学习资料——转载
  14. 【ESP32-IDF】02-2 外设-触摸传感器
  15. Java异常泄露敏感信息_浅谈“异常信息泄露(应用程序错误)”
  16. win10 计算机菜单,win10系统计算机界面菜单栏不见了的还原方案
  17. 陆探一号-中国-2022
  18. sql 根据出生日期计算年龄
  19. PHP 核心技术与最佳实践
  20. 【解决】敬业签Windows电脑桌面便签软件安装不能打开要写入的文件问题造成桌面便签软件安装失败的解决办法

热门文章

  1. html中svg修改背景颜色,如何更改SVG图像中的背景颜色?
  2. 修改 UITabBar的背景颜色
  3. 用友NC V6.5 6.33 6.31 6.3 6.1 2019新个人所得税增强包税改升级补丁包
  4. 数论整理之费马小定理
  5. c语言程序设计小球弹跳,C++Dos游戏设计——弹跳小球
  6. P5713 【深基3.例5】洛谷团队系统(C语言)
  7. 电脑运行MATLAB直接关机,Matlab相关-----matlab跑完程序后自动关机
  8. 4k纸是几厘米乘几厘米_4K纸是多少尺寸
  9. 麻将算法(二)牌型转换以及接牌
  10. 大数据架构师是做什么的?