Gstreamer appsrc流式传输OpenGL帧缓冲区

时间:2017-10-04 07:48:36

标签: opengl video-streaming html5-video gstreamer

我试图通过hlssink使用GStreamer-1.0从我的OSX App流式传输OpenGL帧缓冲。我的管道是 appsrc->decodebin->videoconvert->x264enc->mpegtsmux->hlssink。问题是,Feed看起来像这样,至少有10秒的延迟。screen capture on VLC

如果你看到图片,我的桌面会有一张图片。我刚开始学习GStreamer并且对编码/复用部分不太了解。我注意到的另一件事是,即使没有编码和多路复用部分i.e.,appsrc->videoconvert->osxsink,Feed也会像这样出现。

可能是什么问题?如何从帧缓冲区获得清晰的提要?

我应该如何解决此问题,以便在实时中流式传输,或者至少使用最小延迟

我应该使用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吗?

1 个答案:

答案 0 :(得分:1)

对于延迟,请考虑使用tune=zerolatency元素的x264enc选项。

对于appsrc,我们需要知道您输入管道的数据类型以及您在那里设置的上限。很可能你没有将它们设置为相互匹配,因此gstreamer会误解数据表示。

相关问题