我想连续收听来自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执行此操作,但它不适合我。
答案 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会做一些工作。输出选择器只能确保如果元素位于它后面,这将起作用。