Python在arecord和aplay之间的管道

时间:2015-03-04 05:36:40

标签: python pipe stdout stdin alsa

我想录制声音,处理它,而不是即时播放。下面的代码应该描述更多。

arecord -D plughw:USER -f S16_LE -t raw | python my_app.py | aplay -D plughw:USER -f S16_LE

我能够使用arecordmy_app.py获取raw_input()的输入。现在,我对如何将my_app.py输出发送到aplay时遇到问题。

我尝试在subprocess内使用my_app.py来运行aplay

cmdPlay = 'aplay -D plughw:USER -f S16_LE'
p = subprocess.Popen(
    cmdPlay,
    stdout = subprocess.PIPE,
    stdin = subprocess.PIPE,
    stderr = subprocess.PIPE,
    shell = True
)
p.communicate(input=dataHex.decode('hex'))

但是,我听不到发言者的声音。

那么,你如何在python应用程序和其他进程(作为输入和输出)之间进行管道化? n.b。:如果有来自arecord的捕获数据的raw_input(),还请建议一个更好的方法(如果有的话)。

0 个答案:

没有答案