gstreamer输出选择器不允许保存到文件

时间:2013-04-14 12:22:05

标签: gstreamer

我想连续收听来自alsasrc的audiostream,同时能够将片段保存到文件中。我会按下“记录”或“停止”按钮。

我想我需要以下gst-launch-0.10命令才能工作: gst-launch-0.10 alsasrc do-timestamp = true! tee name = t!排队! alsasink t。 !排队! audioconvert! wavenc!输出选择器名称= s。 ! filesink location = test1.wav s。 ! fakesink

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

现在问题出现在outputselector中,它创建文件test1.wav但不写入它。为了关注这个问题,我创建了:

gst-launch-0.10 audiotestsrc is-live = true do-timestamp = true! wavenc!输出选择器名称= s。 ! filesink location = test1.wav s。 ! filesink location = test2.wav

这也不起作用(gst-launch-0.10 audiotestsrc is-live = true do-timestamp = true!wavenc!filesink location = test1.wav按预期工作)。创建了2个文件但未写入。任何人都可以指出我正确的方向吗?

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

2 个答案:

答案 0 :(得分:2)

Prerolling不是你的朋友,所以在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

答案 1 :(得分:0)

将wavenc元素放入s中怎么样? ! filesink location = test1.wav分支?当流开始和停止时,wavenc会做一些工作。输出选择器只能确保如果元素位于它后面,这将起作用。