gpt4 book ai didi

c - 当主循环在 Gstreamer 中运行时,如何从控制台(stdin)读取并执行用户命令?

转载 作者:行者123 更新时间:2023-12-02 04:27:33 25 4
gpt4 key购买 nike

我可以流式传输视频,但我也想从控制台(stdin)获取用户命令并在流式传输视频时执行命令。例如,如果用户在命令行中输入文本“退出”,我希望它退出循环。我可以通过创建自己的线程来做到这一点,但在 Gstreamer 中一定有更聪明的方法来做到这一点。

我使用 fdsrc 从 stdin 和 fakesink 读取内容来打印命令,如下所示:

...
userInput = gst_parse_launch("fdsrc ! fakesink dump=true", error);
gst_element_set_state (userInput, GST_STATE_PLAYING);
/* start streaming. the default port for RTSP streaming is 8554. */
g_print ("stream is ready at rtsp://127.0.0.1:8554/test1\n");
g_main_loop_run (loop);
gst_object_unref (userInput);
return 0;
...

但我不知道如何将用户输入的文本输入到函数中。我觉得我需要使用回调函数,但 fdsrc 或 fakesink 没有回调函数。

如何在 g_main_loop 运行时获取并处理用户输入的文本?

最佳答案

创建 GIOChannel for stdin 并将其附加到您的 GMainLoop。它将被添加到程序的主轮询循环中,并且每次 stdin 上有输入可用时都会调用回调(由您提供)。只要 GStreamer 使用相同的 GMainLoop,那么它们就应该一起运行而不会互相阻塞,并且不需要您在单独的线程中显式运行 GStreamer 代码。

有关使用 GIOChannel 接收和处理命令行命令的示例,请参阅此要点:https://gist.github.com/bert/260094/c099d4535694d91992a87e04864a3c05134afa3e

关于c - 当主循环在 Gstreamer 中运行时,如何从控制台(stdin)读取并执行用户命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34737775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com