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

简介:

1.  问题现象


常见的音频问题现象描述如下:


- 电流音,爆音,滋滋声或者嘟嘟声

- 声音断断续续,听不清楚

- 回声,能听到自己说话的声音


2. 问题排查


2.1 参数配置问题


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


常见的音频参数和基本原理,可以参考我的这篇文章,这里就不再赘述了:《Android音频开发(1):基础知识》


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


2.2 代码层面的原因


常见的代码层面的问题有如下几种:


- 音频 buffer 大小不匹配,一段 1024 bytes 的音频,放到了 2048 bytes 的数组,导致尾部有随机数

- 音频 resample 重采样的算法问题,导致采样出来的数据出了问题

- Android 的 ByteBuffer 取出数组,是不能直接用 .array() 方法的,而需要用 .get() 方法

- iOS 系统,其他 app 通过系统 API 更改了 AudioSession 采样率的配置


2.3 网络波动


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


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


2.4 回声消除


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


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


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


2.5 混音越界


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



本文转自 Jhuster 51CTO博客,原文链接:http://blog.51cto.com/ticktick/1933255,如需转载请自行联系原作者

相关文章
|
19天前
|
存储 编解码 API
【视频花屏问题】解码天书:深入理解视频流花屏现象及其解决方案
【视频花屏问题】解码天书:深入理解视频流花屏现象及其解决方案
72 5
|
1月前
文字转语音后的音频结束以后,再播放一段时间的背景音乐。什么方案能实现
【2月更文挑战第13天】文字转语音后的音频结束以后,再播放一段时间的背景音乐。什么方案能实现
13 2
|
11月前
|
XML 存储 编解码
浅浅地优化下视频流播放体验
浅浅地优化下视频流播放体验
376 0
|
11月前
|
缓存 Java 索引
浅浅地优化下视频流播放体验(下)
浅浅地优化下视频流播放体验
254 0
|
编解码 网络协议 算法
实战排查|为什么遮挡推流摄像头,会导致播放绿屏?
做音视频的小伙伴们多少都遇到过奇怪的 BUG(如:卡顿、花屏、绿屏、变声等),表象上矛盾点颇多,推理得出的结论都是:“不应该啊!”,最终你抽丝剥茧,发现真相只有一个:“事出反常必有妖”!
实战排查|为什么遮挡推流摄像头,会导致播放绿屏?
|
缓存 监控 网络协议
为什么你看直播会卡,影响直播系统流畅度的主要是这三点
据相关部门的统计,截止到今年3月份,我国的网民数量已突破9.04亿人,互联网的普及率升至64.5%,相比2018年底提升了4.9个百分点。在这当中,移动端的网民用户猛增,随着移动互联网的发展手机逐渐超过电脑的使用率,移动端直播系统也逐渐崛起。
为什么你看直播会卡,影响直播系统流畅度的主要是这三点
白天我在阿里写代码,入夜还有我的麦克风!
昨天下班,IT小哥过来神神秘秘地说,走吗?去酒吧听我唱歌。 说着往我手里塞了个手牌,自己往格子衬衫外面套个黑色皮衣,头也不回地走入夜色。 五新?原来他就是传说中那个白天写代码,入夜唱摇滚的“阿里汪峰”五新? ——啊,等等我啊喂! 推门进入前,我抬头看了看,霓虹招牌在夜色里闪烁: Happy Honey Badger (快乐的平头哥) 欸,这造型有点眼熟——欢迎来到阿里十派年度歌王总决选。
1828 0