我正在为Maemo / MeeGo开发移动应用程序,Maemo使用PulseAudio。 我想播放一个MP3给来电(并取消了麦克风时,这样做,而不是监听来电,一切都应该在后台完成),要做到这一点,我必须redirectaudio输出从一定(如果不可能,所有)应用程序,假装它作为一个input,并使电话应用程序使用它。
在我的Ubuntu PC上,我用pavucontrol做了。 我创build了一个NULL接收器,然后:
Audio Output (from Amarok) --> to NULL Output Skype Input <-- NULL Output Skype Output --> NULL
它的工作原理是,Amarok播放音乐,它stream到Skype,没有播放给我,我什么都没有听到任何过程。 问题在于; a)Maemo没有pavucontrol。 b)甚至如果它(或如果我打包)它不会有什么好处,因为它是一个唯一的graphics用户界面的应用程序,我必须在背景上做所有这些东西,没有任何用户input。 (意思是:CLI或API)
在Freenode #pulseaudio上被问到这个问题时,一位有帮助的人说:“通过pactl或者pacmd可以做到这一点,你需要的命令是move-sink-input和move-source-output,但是你需要知道设备和stream索引“。 所以它看起来像pavucontrol只是一个GUI,pactl和pacmd是真正的交易,最重要的是,他们是CLI应用程序。
我真的很感谢他,但是我对“pactl”,“pacmd”,“move-sink-input”或者“device / stream indexes”一无所知,所以我需要一个非常简化的手册页,类似的应用程序,一个单行命令(两个?整页的命令?,只是给我他们!^^)或有足够的耐心的人解释这个东西给我。
pactl
和pacmd
的手册可以随时用于搜索。 我在这里找到他们:
PACTL
pacmd(pulse-cli-syntax)
我想你对以下pactl
手册的摘录感兴趣:
move-sink-input ID SINK:将指定的播放流(由其数字索引标识)移动到指定的接收器(由其符号名称或数字索引标识)。
你应该能够使用pactl list sink-inputs
, pactl list source-outputs
, pactl list sinks
,和pactl list sources
结合一些grep
和/或sed
或性质的东西,以编程方式确定正确的流和汇。