我正在为Maemo / MeeGo开发移动应用程序,Maemo使用PulseAudio。我想播放一个mp3给来电者(并且在做这个时取消麦克风,而不是听来电者,一切都应该在后台完成),要做到这一点,我必须重定向一定的音频输出(如果不可能,全部)应用程序,将其伪造为输入并使手机应用程序使用它。
在我的Ubuntu PC上,我用pavucontrol做到了。我创建了一个NULL接收器,然后:
Audio Output (from Amarok) --> to NULL Output
Skype Input <-- NULL Output
Skype Output --> NULL
而且它有效,Amarok播放音乐,它正在播放到Skype,没有播放给我,我没有听到任何有关所有过程的内容。问题是; a)Maemo没有pavucontrol。 b)即使它确实(或者我打包它)也没有任何好处,因为它是一个唯一的GUI应用程序,我必须在背景上完成所有这些东西,没有任何用户输入。 (意思是:CLI或API)
在Freenode #pulseaudio上询问这个问题并且有用的人说“它可以通过pactl或pacmd完成,你想要的命令是move-sink-input和move-source-output,但是你需要知道设备和流索引。“所以看起来pavucontrol只是一个GUI,pactl和pacmd是真正的交易,最重要的是,它们是CLI应用程序。
我真的很感谢他,但我对“pactl”,“pacmd”,“move-sink-input”或“设备/流索引”一无所知,所以我需要一个非常简化的手册页,或者一个类似的应用程序的源,一个单行命令(两个?整个命令页?,只是给他们!^^)或有足够的耐心向我解释这些东西的人。
答案 0 :(得分:2)
如果您进行搜索,pactl
和pacmd
的手册随时可用。我在这里找到了他们:
我认为您对pactl
手册中的以下摘录感兴趣:
move-sink-input ID SINK: 将指定的播放流(由其数字索引标识)移动到指定的接收器(由其符号名称或数字索引标识)。
您应该可以将pactl list sink-inputs
,pactl list source-outputs
,pactl list sinks
和pactl list sources
与某些grep
和/或sed
结合使用,或者这种性质的东西,以编程方式确定正确的流和下沉。