【问题标题】:gstreamer output-selector does not allow saving to filegstreamer 输出选择器不允许保存到文件
【发布时间】:2013-04-14 12:22:05
【问题描述】:

我想连续收听来自 alsasrc 的音频流,同时能够将 sn-ps 保存到文件中。我将按下“记录”或“停止”按钮。

我认为我需要以下 gst-launch-0.10 命令才能工作: gst-launch-0.10 alsasrc do-timestamp=true !三通名称=t!队列 !阿尔萨辛克!队列 !音频转换!波浪!输出选择器名称=s s。 !文件接收器位置=test1.wav s。 !假水槽

当我按下记录/停止按钮时,我将输出选择器编程为在 filesink 和 fakesink 之间切换,我知道 gst-plugins-bad/tests/icles/output-selector-test.c 示例插件,并想破解一下。

现在问题出现在输出选择器中,它创建了文件 test1.wav 但没有写入文件。为了专注于我创建的这个问题:

gst-launch-0.10 audiotestsrc is-live=true do-timestamp=true !波浪!输出选择器名称=s s。 !文件接收器位置=test1.wav s。 !文件接收器位置=test2.wav

这也不起作用(而 gst-launch-0.10 audiotestsrc is-live=true do-timestamp=true !wavenc !filesink location=test1.wav 按预期工作)。这两个文件已创建但未写入。谁能指出我正确的方向?

在发布“[gst-devel] 如何在播放管道之前将多个文件接收器链接到输出选择器”中,我读到第二个接收器在预卷时被阻塞。这就是为什么 output-selector-test.c 中的示例使用 live-src 作为技巧的原因,我也使用 audiotestsrc 这样做,但它对我不起作用。

【问题讨论】:

    标签: gstreamer


    【解决方案1】:

    在这里预卷不是你的朋友,所以在 filesink 和 fakesink 上都设置 async=0:

    gst-launch-0.10 command to work: gst-launch-0.10 alsasrc do-timestamp=true ! tee name=t ! queue ! alsasink t. ! queue ! audioconvert ! wavenc ! output-selector name=s s. ! filesink location=test1.wav async=0 s. ! fakesink async=0
    

    【讨论】:

      【解决方案2】:

      将wavenc元素放入s中怎么样? !文件接收器位置=test1.wav 分支?当流开始和停止时,wavenc 会做一些工作。 output-selector 只有在元素位于其后面时才能确保这项工作。

      【讨论】:

      • 那么最好为它提交一个错误。有人需要看看 output-selector 和 wavenc 的组合!文件接收器。
      猜你喜欢
      • 2019-12-11
      • 1970-01-01
      • 2011-07-26
      • 2013-03-27
      • 2017-10-26
      • 2017-01-20
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多