Gstreamer appsrc 流式传输 OpenGL 帧缓冲区
Gstreamer appsrc to stream OpenGL framebuffer
我正在尝试通过 hlssink 使用 GStreamer-1.0 从我的 OSX 应用流式传输 OpenGL 帧缓冲区。我的管道是
appsrc->decodebin->videoconvert->x264enc->mpegtsmux->hlssink
。问题是,提要是这样显示的,至少有 10 秒的延迟。
如果你看到图片,那是我桌面的包装图片。我刚开始学习 GStreamer,对 encoding/muxing 部分不太了解。我注意到的另一件事是,即使没有编码和多路复用部分 i.e.,appsrc->videoconvert->osxsink
,提要也是这样显示的。
可能是什么问题?如何从帧缓冲区获取清晰的提要?
我应该如何解决这个问题,以便在 实时 或至少 最小延迟 下进行流式传输?
我应该使用 tcpserversink
而不是 hlssink
来减少延迟吗?
我正在将 GStreamer 与我的 OSX 应用程序集成,后者为 appsrc 生成源缓冲区。我的最终目标是通过 http / tcp 流式传输实时提要。
我已经为此工作了两个星期,很有可能我遗漏了一些非常基本的东西,所以请随时发表您的意见。如果有人需要更多信息或源代码,请告诉我。
编辑:
这是我为 appsrc 设置的上限。
caps = gst_caps_new_simple ("video/x-raw",
"width", G_TYPE_INT, 1280,
"height", G_TYPE_INT, 800,
"format", G_TYPE_STRING, "RGB16", NULL);
输入的数据类型是来自帧缓冲区的原始数据。这是 mac 的屏幕投射应用程序。
如果我进行实时屏幕投射,hlssink 是否是正确的选择?我应该试试 tcpserversink 吗?
对于延迟,请考虑对 x264enc
元素使用 tune=zerolatency
选项。
对于 appsrc,我们需要知道您将哪种数据输入管道以及您在那里设置的上限。很可能您没有将它们设置为相互匹配,因此 gstreamer 会误解数据表示。
我正在尝试通过 hlssink 使用 GStreamer-1.0 从我的 OSX 应用流式传输 OpenGL 帧缓冲区。我的管道是
appsrc->decodebin->videoconvert->x264enc->mpegtsmux->hlssink
。问题是,提要是这样显示的,至少有 10 秒的延迟。
如果你看到图片,那是我桌面的包装图片。我刚开始学习 GStreamer,对 encoding/muxing 部分不太了解。我注意到的另一件事是,即使没有编码和多路复用部分 i.e.,appsrc->videoconvert->osxsink
,提要也是这样显示的。
可能是什么问题?如何从帧缓冲区获取清晰的提要?
我应该如何解决这个问题,以便在 实时 或至少 最小延迟 下进行流式传输?
我应该使用 tcpserversink
而不是 hlssink
来减少延迟吗?
我正在将 GStreamer 与我的 OSX 应用程序集成,后者为 appsrc 生成源缓冲区。我的最终目标是通过 http / tcp 流式传输实时提要。
我已经为此工作了两个星期,很有可能我遗漏了一些非常基本的东西,所以请随时发表您的意见。如果有人需要更多信息或源代码,请告诉我。
编辑:
这是我为 appsrc 设置的上限。
caps = gst_caps_new_simple ("video/x-raw",
"width", G_TYPE_INT, 1280,
"height", G_TYPE_INT, 800,
"format", G_TYPE_STRING, "RGB16", NULL);
输入的数据类型是来自帧缓冲区的原始数据。这是 mac 的屏幕投射应用程序。
如果我进行实时屏幕投射,hlssink 是否是正确的选择?我应该试试 tcpserversink 吗?
对于延迟,请考虑对 x264enc
元素使用 tune=zerolatency
选项。
对于 appsrc,我们需要知道您将哪种数据输入管道以及您在那里设置的上限。很可能您没有将它们设置为相互匹配,因此 gstreamer 会误解数据表示。