教你如何解决双声道文件在Android设备上播放声音异常问题

2020-12-06 06:29:14 浏览数 (1)

前言

最近收到用户反馈直播录制文件在Android手机上播放声音异常,几乎听不到声音,只有滋滋的电流声,但是在ios、pc端播放却是正常的,是Android手机的问题还是视频本身的问题呢?我们来一探究竟~~

问题定位:

1、使用FFmpeg命令获取文件信息(如图1),看到音频流是双声道立体声的。

图1图1

我们先来了解下什么是声道:声道指声音在录制或者播放时不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时扬声器的数量。常见的有单声道、双声道、4声道、5.1声道、7.1声道等。

目前市面上大多数的Android手机都是单声道的(也就是只有一个扬声器),上面我们说到此视频是双声道的,那是否双声道音视频在单声道机型上播放都没有声音呢?非也!

在VLC上播放此视频,点击音频->可视化->波形 (如图2)可以观察下具体的波形(如图3,上方是左声道,下面是右声道),相位相差180度,当左声道声波处在波峰时,右声道声波处在波谷,两个声道声波叠加一起再输出到同一个扬声器,刚好就抵消没有声音了,如果我们插上耳机发现是可以听到声音的。

图2图2
图3图3

那么此时你肯定疑惑为什么会出现相位相反的情况呢?Me too,经过查找一番资料,罪魁祸首大概率就是麦克风极性接反了。。。

解决方案

1、提前预防

如上所述,当然是检查下麦克风设备接线是否正常咯。

2、亡羊补牢

1)使用FFmpeg命令处理,音频流仅保留左声道,输出到新的文件(有声音.mp4)中,输出文件音频流声道类型为mono(即单声道),这种情况下,当设备有两个扬声器,两个扬声器依旧都能听到声音,只不过播放的都是同一声道的音频源,所以波形也都是一样的(如图5),最后在Android设备播放测试声音正常。

代码语言:javascript复制
ffmpeg -i 没声音.mp4 -map_channel 0.1.0 -c:v copy 有声音.mp4
图4图4
图5图5

2)如果是纯音频文件有相位相反的情况,也可以使用音频编辑软件处理(以Audition为例),导入文件(这里还是使用之前的视频文件测试),选择右声道(左右声道均可)点击效果->反相(如图6),看到右声道相位反转过来与左声道一致了(如图7),然后保存即可(只能导出音频文件),在Android设备上播放也同样正常。

图6图6
图7图7

小结

以上就是双声道文件在Android设备上声音异常的原因及处理办法,文中的case是声道波形反相给我们带来的不便,但实际生活中很多方面都应用了反相的原理,例如降噪耳机就是用噪音反向的波形抵消噪音,从而实现降噪的效果,大家有兴趣可以网上再了解下。

0 人点赞