在我的gstreamer管道中用阀门记录

时间:2014-03-22 18:15:39

标签: python linux gstreamer

我的管道中的阀门有问题:

self.pipeline = gst.parse_launch(' ! '.join(['autoaudiosrc',
                                              'queue silent=false leaky=2 max-size-buffers=0 max-size-time=0 max-size-bytes=0',
                                              'audioconvert',
                                              'audioresample',
                                              'audio/x-raw-int, rate=16000, width=16, depth=16, channels=1',
                                              'tee name=t',
                                              'queue',
                                              'audioresample',
                                              'audio/x-raw-int, rate=8000',
                                              'vader name=vader auto-threshold=true',
                                              'pocketsphinx lm=%s dict=%s name=listener' % (dir_path + '/pocketsphinx/lisa.lm',dir_path + '/pocketsphinx/lisa.dic'),
                                              'fakesink dump=1 t.',
                                              'valve name=valve drop=0',
                                              'queue',
                                              'flacenc',
                                              'filesink async=0 location=' + self.recording]))

我知道这不是创建管道的最好的pythonic方式,但它是最可读的。

将其设置为0会在我的文件中记录麦克风流量,一切正常。 但是我希望默认情况下放弃它,并根据事件动态打开阀门(使用pocketsphinx监听关键字),然后再次关闭此阀门。 但它似乎不起作用:我的文件保持0字节。

一旦pocketsphinx听到关键字,我就启用了阀门:

self.recording_valve.set_property('drop',False)

我试图给出一个非常简短的问题示例。也许它不在这部分,但那是我的调试引导我的地方。

要查看整个项目: https://github.com/Seraf/LISA-CLIENT-Linux/blob/pocketsphinx/lisa.tac

调用此类: https://github.com/Seraf/LISA-CLIENT-Linux/blob/pocketsphinx/lib/listener.py

调用此类: github /Seraf/LISA-CLIENT-Linux/blob/pocketsphinx/lib/recorder.py

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

看起来有点愚蠢,但是我很快就重写了我的filesink文件,所以“watch”命令,即使是1秒的timeloop也没有看到文件中的变化。

删除有罪行告诉我文件已正确填写。

对不起噪音。