好的,所以我pyaudio
从包中python-pyaudio
使用安装apt-get
,现在当我导入和调用时如下:
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyaudio
>>> p= pyaudio.PyAudio()
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_params.c:2162:(snd1_pcm_hw_refine_slave) Slave PCM not usable
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only …
Run Code Online (Sandbox Code Playgroud) 我有一台运行 Ubuntu 18.04 和 i3wm 的笔记本电脑,通过 Thunderbolt 连接到扩展坞和网络摄像头。我希望将默认脉冲音频接收器设置为笔记本电脑内部声卡。因此我有
set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
set-default-source alsa_input.pci-0000_00_1f.3.analog-stereo
Run Code Online (Sandbox Code Playgroud)
在/etc/pulse/default.pa
。
这不起作用,启动后默认接收器设置为扩展坞,默认源设置为网络摄像头。脉冲音频告诉我
[pulseaudio] main.c: Source alsa_input.pci-0000_00_1f.3.analog-stereo does not exist.
[pulseaudio] main.c: Sink alsa_output.pci-0000_00_1f.3.analog-stereo does not exist.
Run Code Online (Sandbox Code Playgroud)
启动后重新启动脉冲音频会将默认源和接收器设置为配置中指定的笔记本电脑内部声卡。我该如何调试这个问题?
我打算在android上移植脉冲音频.我删除了可选部分(如X依赖,oss支持等)后在ubuntu上编译了它,我能够将声音远程传输到网络服务器(运行windows-7).现在我想把它移植到android.任何关于如何开始的想法都会受到赞赏,或者链接到一些页面,它正在做一些类似的事情,可以让我开始使用基本的Makefile基础设施.
谢谢.
我安装了 ubuntu,默认安装了pulseaudio。当pulseaudio运行时,它可以工作:aplay -D hw:2,7 /usr/share/xbmc/sounds/Bursting\ Bubbles/nav.wav
但当没有pulseaudio 守护进程运行时,它就不会。该命令没有给出错误,但我听不到声音。
hw:2,7 是 Nvidia hdmi 设备。
为什么是这样?我想不通。
我在Ubuntu上,我想将PulseAudio输出记录到文件中,以记录pygame程序.格式没关系,因为我之后可以改变它,所以原始音频很好.
环顾四周,似乎GStreamer可能能够解决这个问题,但我对它并不熟悉,并且广泛的搜索还没有得出答案.因此欢迎涉及GStreamer或其他方面的答案.
谢谢!
PulseAudio文档中似乎缺少一个明确的解释,我找不到任何简单的例子.
两者的输出pactl list sink-inputs
,并pacmd list-sink-inputs
包含一个属性部分:
Properties:
media.name = "ALSA Playback"
application.name = "ALSA plug-in [snapclient]"
native-protocol.peer = "UNIX socket client"
native-protocol.version = "29"
application.process.id = "6393"
application.process.user = "root"
application.process.host = "xxxxxx"
application.process.binary = "snapclient"
application.language = "C"
application.process.machine_id = "8dadf95c2f504864bc0f8b3ab149cbe0"
application.process.session_id = "c4"
module-stream-restore.id = "sink-input-by-application-name:ALSA plug-in [snapclient]"
Run Code Online (Sandbox Code Playgroud)
我想知道如果有一种方法直接要么查找一个水槽输入的索引由application.process.id
或application.process.binary
,而不诉诸解析上述命令的输出的许多行或写入一个单独的C程序。
我的总体目标是通过ansible为特定用户重新启动pulseaudio(所以如果您有更好的想法如何做到这一点,我很乐意听到它:))
我想以用户身份运行以下命令myuser
,根据pulseaudio,这不应该以 sudo/root 身份完成。
$([[ $(pulseaudio -k) -eq 0 ]] || exit 0; sleep 5; [[ $(pulseaudio -D --exit-idle-time=-1) -eq 0 ]] || exit 0)
Run Code Online (Sandbox Code Playgroud)
如果我自己在一台机器上测试它,效果会很好。如果pulseaudio正在运行,它会杀死它,然后再次启动它,如果pulseaudio已经停止,它不会失败。
我的 ansible 任务(作为角色的一部分)如下所示:
- name: restart pulse audio
shell: '$([[ $(pulseaudio -k) -eq 0 ]] || exit 0; sleep 5; [[ $(pulseaudio -D --exit-idle-time=-1) -eq 0 ]] || exit 0)'
args:
executable: /bin/bash
become: true
become_method: sudo
become_flags: "su - {{ ansible_user }} -c"
Run Code Online (Sandbox Code Playgroud)
但如果我运行它,我会收到错误FAILED! => {"msg": "Timeout …
我正在尝试构建一个简单的服务器,基本上:
\n我能够用puppeteer-stream来实现这个来实现这一点,并且它在本地运行得很好。
\n在尝试将其放入部署到 AWS Elasticbeanstalk 的 docker 实例中时,我遇到了一个问题,无法从 docker 容器启动 chrome 浏览器,但在 xvfb 的帮助下修复了这个问题 - 现在它启动了一个假 UI用于 chrome 选项卡并记录其中的内容。
\n此时,我可以完美录制视频,但没有音频。我尝试将 PulseAudio 设置为虚拟音频驱动程序,但它也不起作用。
\nPulseAudio 的另一个问题是,它将记录整个过程而不是 chrome 选项卡,因此如果我们决定同时记录多个网页,将会变得混乱。
\n这是我的 Dockerfile 目前的样子:
\nFROM node:12\n\n# Install dependencies\nRUN apt-get update &&\\\n apt-get install -yq gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \\\n libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \\\n libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 \\\n …
Run Code Online (Sandbox Code Playgroud) 我的主机上有一个虚拟接收器。pulseaudio 作为系统范围的守护进程运行。尝试使用以下命令启动模拟器时:
emulator -avd emulator -no-window
我得到以下输出:
pulseaudio: Failed to initialize PA contextCould not init 'pa' audio driver
如果我要排除-no-window
标志,那么它就可以正常工作。如何让我的虚拟接收器在无头 Android 模拟器上工作?