【问题标题】:error in Ubuntu when running portaudio example运行 portaudio 示例时 Ubuntu 中的错误
【发布时间】:2015-04-23 14:58:23
【问题描述】:

我在Ubuntu 14.04上安装了portaudio,并编译了一个测试程序如下:

gcc -o Test3c Test3c.c ../libportaudio.a -lrt -lasound -ljack -lpthread -lm

没有错误。 (Test3c.c和包含的pa_devs.c一样,可以在here找到。)但是当我运行它时,

./Test3c

我明白了:

ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
bt_audio_service_open: connect() failed: Connection refused (111)
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
PortAudio version number = 1899
PortAudio version text = 'PortAudio V19-devel (built Feb 14 2015 11:51:22)'
Number of devices = 20
--------------------------------------- device #0
Name                        = HDA Intel PCH: ALC892 Analog (hw:0,0)
Host API                    = ALSA
Max inputs = 2, Max outputs = 6
Default low input latency   =   0.0058
Default low output latency  =   0.0087
Default high input latency  =   0.0348
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 2 channel input = 
    44100.00, 48000.00, 96000.00, 192000.00
Supported standard sample rates
 for half-duplex 16 bit 6 channel output = 
None
Supported standard sample rates
 for full-duplex 16 bit 2 channel input, 6 channel output = 
None
--------------------------------------- device #1
Name                        = HDA Intel PCH: ALC892 Digital (hw:0,1)
Host API                    = ALSA
Max inputs = 0, Max outputs = 2
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 2 channel output = 
    32000.00, 44100.00, 48000.00, 88200.00,
    96000.00, 192000.00
--------------------------------------- device #2
Name                        = HDA Intel PCH: ALC892 Alt Analog (hw:0,2)
Host API                    = ALSA
Max inputs = 2, Max outputs = 0
Default low input latency   =   0.0058
Default low output latency  =  -1.0000
Default high input latency  =   0.0348
Default high output latency =  -1.0000
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 2 channel input = 
    44100.00, 48000.00, 96000.00, 192000.00
--------------------------------------- device #3
Name                        = HDA NVidia: HDMI 0 (hw:1,3)
Host API                    = ALSA
Max inputs = 0, Max outputs = 8
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 8 channel output = 
    32000.00, 44100.00, 48000.00, 88200.00,
    96000.00, 192000.00
--------------------------------------- device #4
Name                        = HDA NVidia: HDMI 0 (hw:1,7)
Host API                    = ALSA
Max inputs = 0, Max outputs = 8
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 8 channel output = 
    32000.00, 44100.00, 48000.00, 88200.00,
    96000.00, 192000.00
--------------------------------------- device #5
Name                        = HDA NVidia: HDMI 0 (hw:1,8)
Host API                    = ALSA
Max inputs = 0, Max outputs = 8
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 8 channel output = 
    32000.00, 44100.00, 48000.00, 88200.00,
    96000.00, 192000.00
--------------------------------------- device #6
Name                        = HDA NVidia: HDMI 0 (hw:1,9)
Host API                    = ALSA
Max inputs = 0, Max outputs = 8
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 8 channel output = 
    32000.00, 44100.00, 48000.00, 88200.00,
    96000.00, 192000.00
--------------------------------------- device #7
Name                        = sysdefault
Host API                    = ALSA
Max inputs = 128, Max outputs = 128
Default low input latency   =   0.0213
Default low output latency  =   0.0213
Default high input latency  =   0.0213
Default high output latency =   0.0213
Default sample rate         = 48000.00
Supported standard sample rates
 for half-duplex 16 bit 128 channel input = 
     8000.00,  9600.00, 11025.00, 16000.00,
    22050.00, 32000.00, 44100.00, 48000.00,
    88200.00
Supported standard sample rates
 for half-duplex 16 bit 128 channel output = 
     8000.00,  9600.00, 11025.00, 16000.00,
    22050.00, 32000.00, 44100.00, 48000.00,
    88200.00
Supported standard sample rates
 for full-duplex 16 bit 128 channel input, 128 channel output = 
     8000.00,  9600.00, 11025.00, 16000.00,
    22050.00, 32000.00, 44100.00, 48000.00,
    88200.00
--------------------------------------- device #8
Name                        = front
Host API                    = ALSA
Max inputs = 0, Max outputs = 6
Default low input latency   =  -1.0000
Default low output latency  =   0.0058
Default high input latency  =  -1.0000
Default high output latency =   0.0348
Default sample rate         = 44100.00
Supported standard sample rates
 for half-duplex 16 bit 6 channel output = 
Test3c: pcm_params.c:2249: snd1_pcm_hw_params_slave: Assertion `err >= 0' failed.
Aborted (core dumped)

当 Pa_IsFormatSupported() 被调用时,它在列出设备的中途崩溃。 Google 告诉我“pcm_params.c”指的是 ALSA 库。有没有人找到解决此类问题的方法?

【问题讨论】:

  • 尝试更新alsa-lib
  • libasound2 和 libasound2-dev 已经是最新版本(1.0.27.2-3ubuntu7)。
  • 更新:我重新安装了 Ubuntu Studio 14.04,现在它似乎可以工作了。
  • 更新:现在它不再工作了,同样的错误。我相信问题是在我重做“./configure && make”后开始的。

标签: c ubuntu audio alsa portaudio


【解决方案1】:

所以我想我找到了解决方案。在最近的错误之后,我注意到另一个音频问题 here 的建议以以下方式重新启动音频驱动程序:

pulseaudio -k && sudo alsa force-reload

我做到了,然后尝试运行已编译的程序,但又出现错误(我想我是不耐烦了)。然后我第二次执行此命令,现在它可以工作了。

更新:一段时间后,我确实再次收到错误,并且必须再次重新启动驱动程序。

【讨论】:

    【解决方案2】:

    目前我是 Portaudio-linux 主机的维护者,刚刚在这里遇到了这个问题。 Portaudio 邮件列表中也报告了同样的问题,并对其进行了调查。该断言位于 Alsa-lib 中,现在已被 Alsa 开发人员删除,以支持错误返回。见

    http://git.alsa-project.org/?p=alsa-lib.git;a=commit;h=67f73b0fab466e780dcc0442e19894a1cbedc43b

    某些设备似乎会导致“前”(和其他一些)PCM 上的 6 通道出现问题。这不是 Portaudio 的错误,但当它探测设备和 PCM 的功能时,它会暴露 Alsa 系统中的问题。删除断言后,它现在就失去了这些功能。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并通过修复 /usr/share/alsa/pcm 中的一些错误 pcm 定义来解决它。在文件底部的路由部分,卡驱动程序引用了一个不同的 pcm,然后是文件中定义的那个。

      【讨论】:

        猜你喜欢
        • 2016-01-03
        • 2019-08-07
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多