我在重新编译 PulseAudio 时遇到了问题。我决定重新编译以尝试 WebRTC 回声消除以及访问均衡器。
我在这里没有做任何疯狂的事情,我只是做了以下事情:
apt-get source pulseaudio
sudo apt-get build-dep pulseaudio
sudo apt-get install libwebrtc-audio-processing-dev
cd pulsaudio-4.0
#Add --enable-webrtc-aec to debian/rules
dpkg-builpackage -uc -us -b -j8
我在编译时遇到以下错误:
In file included from /usr/include/x86_64-linux-gnu/sys/soundcard.h:1:0,
from utils/padsp.c:35:
utils/padsp.c: In function 'dsp_ioctl':
utils/padsp.c:2280:14: error: 'SOUND_PCM_READ_RATE_is_obsolete' undeclared (first use in this function)
case SOUND_PCM_READ_RATE:
^
utils/padsp.c:2280:14: note: each undeclared identifier is reported only once for each function it appears in
utils/padsp.c:2288:14: error: 'SOUND_PCM_READ_CHANNELS_is_obsolete' undeclared (first use in this function)
case SOUND_PCM_READ_CHANNELS:
^
utils/padsp.c:2296:14: error: 'SOUND_PCM_READ_BITS_is_obsolete' undeclared (first use in this function)
case SOUND_PCM_READ_BITS:
^
make[4]: *** [libpulsedsp_la-padsp.lo] Error 1
即使从构建选项中删除 --enable-webrtc-aec,它也无法正确编译。有人知道这里出了什么问题吗?
澄清:有一种方法可以通过使用 --disable-oss-wrapper 来避免此构建问题,但是此选项在源包本身中是启用的(默认情况下)。如果这是用于构建包的源,那么它是如何构建的?我试图弄清楚的是如何设置我的系统来构建默认包(具有附加功能)而不删除应该根据存储库中提供的版本可用。这应该是一个简单的过程,但出于某种原因,事实并非如此。
编辑:所以,我认为 5.0 版本可能可以帮助我避免这个问题,但我使用 PulseAudio 5.0 时遇到的错误与使用 4.0 时遇到的错误相同。它抱怨的标头由 libc6-dev 提供。是否有可能在 libc6 中发生了一些更改导致出现此问题?
答案1
看来自从升级到 Utopic 或 Vivid LTS 支持堆栈以来,这个问题已经解决了。我决定最近再试一次,除了并行作业的问题外,编译没有问题。我不得不删除oss4-dev
,但这是上次尝试的遗留问题,因为它apt-file
告诉我 oss4-dev 将提供它抱怨的文件的版本。
总而言之,WebRTC 回声消除效果非常好。我测试了它,通过扬声器播放音乐,它消除了所有声音。最终结果有点模糊,但这个小副作用值得。我的想法:WebRTC 回声消除应该成为主流。