1

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

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

当我按下记录/停止按钮时,我对输出选择器进行编程以在文件接收器和假接收器之间切换,我知道插件中的 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 来做到这一点,但它对我没有用。

4

2 回答 2

3

预卷在这里不是你的朋友,所以在 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
于 2013-07-06T20:57:42.980 回答
0

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

于 2013-04-15T13:38:34.453 回答