CoolBird007 发表于 2018-7-2 23:08:02

LINUX ALSA只有单声道是什么原因

ALSA 1.0.25,APLAY 播单声道的WAV时两边耳机都有声。是正常的,因为它就是这效果。但是播2声道的WAV时,却会把两个声道混合同时输出到耳机两边。
我试着把一个声道的音量调成0,注意,还是2声道,结果播放出它是把一个声道的声音两边都一样响。。
另外,它自带的测试用的WAV文件全部都是1声道的。能不能说明什么问题??
而OSS则正常两个声道分开。
各位有LINUX 开发板的试试看会不会出现这样的情况。。。
我的板子是AT91SAM9260。LINUX 2.6.38

CoolBird007 发表于 2018-7-2 23:11:09

之所以不用OSS是因为它播同一首歌,会出现左右声道反调的情况。。试试重复播放同一着歌就能听得出来。比如蔡琴《把月光射下来》。角铁的声音。

winterw 发表于 2018-7-3 07:47:17

mono格式的wav数据应该是指只有一个通道采样,至于在播放的时候是否左右两个耳机都响这是可以通过codec设置的,即使两个耳机都响它俩播放的也都是相同的单个通道的数据。
双声道的数据是分左声道和右声道数据的,通过codec可以分别映射到耳机的左和右,即两个耳机播放不同数据。
1.建议你自己做2个测试的pcm文件,单声道和双声道的,使用正弦波即可,双声道的两个波形留出一个相位差,然后再使用不同的幅值。然后使用aplay -r 8000 -c 2 -f S16_LE --period-size=xxx --buffer-size=yyy yourpcm.pcm
其中,period-size和buffer-size根据你自己的实际情况设置,yourpcm.pcm是你的pcm文件名称。
然后再把耳机的输出直接插到pc的line-in端,打开cooledit进行录音,看看左右声道的数据波形是不是你的pcm文件的波形,通过相位差和幅值的不同可以区分。

2.你看看codec的驱动中音频流的路径设置,是否符合你的需求,即有没有左右声道混加的效果,是否左右声道颠倒等。

CoolBird007 发表于 2018-7-4 09:57:37

winterw 发表于 2018-7-3 07:47
mono格式的wav数据应该是指只有一个通道采样,至于在播放的时候是否左右两个耳机都响这是可以通过codec设置 ...

谢谢指点,问题未解决。。
网上搜到同样的问题很多。可能是个死症。
https://bbs.csdn.net/topics/340039889

winterw 发表于 2018-7-4 11:46:10

CoolBird007 发表于 2018-7-4 09:57
谢谢指点,问题未解决。。
网上搜到同样的问题很多。可能是个死症。
https://bbs.csdn.net/topics/340039 ...

建议直接看看驱动的代码,一个阶段一个阶段的做些试验慢慢排除
页: [1]
查看完整版本: LINUX ALSA只有单声道是什么原因