Gstreamer 0.10通过键盘切换输出选择器

时间:2014-11-27 15:52:58

标签: gstreamer

我正在使用gstreamer 0.10版本。 我的用例是两个分支(tee元素)。在其中一个我有 - > decoder-> tee-> jpegenc->输出选择器 - > fakesink                                          - > multifilesink

这是在应用程序中实现的。现在我使用g_timeout_add在两个输出之间切换,但在这种情况下,如果它连接10s到fakesink,它同时连接到multifilesink。我想存档:如果我按一个按钮只保存一帧作为jpg。如果我再次按它,​​我应该用不同的名称保存它(这就是我使用multifilesink的原因,filesink会覆盖它)。有人可以帮我提示,请问如何通过键盘上的事件存档。

1 个答案:

答案 0 :(得分:2)

首先,0.10已经过时且没有使用,请考虑转移到1.0版本。

这是一个了解如何从控制台读取字符的情况。您可以使用getchar()或使用GIOChannel,因为您可能还需要一个用于应用程序的主循环(https://developer.gnome.org/glib/stable/glib-IO-Channels.html#g-io-channel-read-chars)。使用GIOChannel的示例。可以在这里找到一个示例应用程序:https://github.com/thiagoss/gst-test-apps/blob/master/apps/dvbsrc-capture-freq-switch.c(虽然它等待读取整行,但您可以根据需要进行修改)。

我给你的管道提出的另一个建议是在jpegenc之前设置输出选择器,以避免编码图像只是为了丢弃。此外,通过使用缓冲区探针返回FALSE以删除缓冲区或TRUE以使其传递0.10或_DROP和_OK返回1.0(转1.0!)可能更容易实现您想要的效果。它比使用输出选择器更容易。