【问题标题】:gstreamer pipeline with VADER element stalls on PAUSE when used with a tee与三通一起使用时,带有 VADER 元素的 gstreamer 管道在 PAUSE 上停止
【发布时间】:2013-10-22 20:41:04
【问题描述】:

我有这个使用 pocketsphinx 的 VAD 元素的管道:

Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + "! vader 名称=vad 自动阈值=true" + "!level name=wavelevel interval=100000000 " + // 级别间隔以纳秒为单位 "!wavenc" + “!文件接收器位置=audioz.wav” );

它工作正常,只是在没有声音进入时流式传输停止 资源。

我想独立于 VAD 继续录制, 所以我用三通尝试了这条管道:

Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + “!三通名称=t”+ "!队列" + "! vader 名称=vad 自动阈值=true" + "! fakesink t.sync=false" + "!队列" + "!level name=wavelevel interval=100000000 " + // 级别间隔以纳秒为单位 "!wavenc" + “!文件接收器位置=audioz.wav” );

而且这个总是停顿,状态从 NULL -> READY -> PAUSE, 并在 PAUSE 中永远停滞不前。

“独立VAD”的目标只是记录开始和结束时间 语音段数(由 VAD 检测)。

更新:

评论该行:“! fakesink t.sync=false” 解决了这个问题,所以下面的管道可以满足我的需要:

this.pipeline = Gst.parse_launch( "pulsesrc 设备=\"alsa_input.usb-046d_08c9_674634A4-02-U0x46d0x8c9.analog-mono\" " + " ! 三通名称=t" + " t. ! 队列 " + " ! vader 名称=vad 自动阈值=true " + " t. ! 队列 " + " !level name=wavelevel interval=1000000000 " + // 级别间隔以纳秒为单位 " !wavenc " + “!文件接收器位置=audioz.wav” );

剩下的问题是没有接收器的队列是否可以...

【问题讨论】:

  • 修改 vader 本身(为其添加属性)以绕过音频可能更容易,即使它是无声的。

标签: gstreamer cmusphinx


【解决方案1】:

最简单的解决方案是在两个接收器上设置 async=0。 (fakesink 和文件接收器)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-04-07
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    相关资源
    最近更新 更多