Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gstreamer appsrc流式处理OpenGL帧缓冲区_Opengl_Video Streaming_Html5 Video_Gstreamer - Fatal编程技术网

Gstreamer appsrc流式处理OpenGL帧缓冲区

Gstreamer appsrc流式处理OpenGL帧缓冲区,opengl,video-streaming,html5-video,gstreamer,Opengl,Video Streaming,Html5 Video,Gstreamer,我正试图通过hlssink使用GStreamer-1.0从我的OSX应用程序中传输OpenGL帧缓冲区。我的管道是 appsrc->decodebin->videoconvert->x264enc->mpegtsmux->hlssink。问题是,feed看起来是这样的,并且至少有10秒的延迟 如果你看到这张图片,那就是我的桌面的一张包装好的图片。我刚开始学习GStreamer,对编码/muxing部分不太了解。我注意到的另一件事是,即使没有编码和muxing部分,比如appsrc->videoc

我正试图通过hlssink使用GStreamer-1.0从我的OSX应用程序中传输OpenGL帧缓冲区。我的管道是 appsrc->decodebin->videoconvert->x264enc->mpegtsmux->hlssink。问题是,feed看起来是这样的,并且至少有10秒的延迟

如果你看到这张图片,那就是我的桌面的一张包装好的图片。我刚开始学习GStreamer,对编码/muxing部分不太了解。我注意到的另一件事是,即使没有编码和muxing部分,比如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是正确的选择吗?我是否应该尝试TCPServices Link?

< P>等待时间,考虑使用XY44EnC元素的OTE=ZeloLATION选项。< /P>
对于appsrc,我们需要知道您将什么样的数据输入到管道中,以及您在管道中设置了什么样的上限。很可能您没有将它们设置为相互匹配,因此gstreamer会误解数据表示。

抱歉。我已经用所需的细节编辑了这个问题。我怀疑大写/颜色空间转换问题,但不知道如何解决。对于延迟,当我设置tune=zerolatency时,我会收到以下警告:770:GLib GObject-[1;33 mWarning[0m**:GstX264EncTune类型的值GstX264EncTune静态图像|快速解码| 2193272对于“GstX264EncTune”类型的属性“tune”无效或超出范围。您如何设置此选项?gst-launch-1.0 videotestsrc!x264enc tune=zerolatency!fakesink对我来说没有错误。这对我也适用。我正在使用appsrc在应用程序中执行此操作。通过顺便问一下,你对tcp/udp流媒体有什么想法吗?我认为hlssink永远不会是一个选项,因为它需要花费大量的时间来生成数据段并流媒体。这取决于你想要存档的延迟。RTP适合于低延迟,但需要更多的实现工作。RTP over RTSP适合于大约1-2秒的中延迟。RTMP也是如此。延迟小于1秒是很复杂的,因为您需要调整编码器,以在视频缓冲区大小限制的情况下以甚至允许流的速度生成流。请注意,在代码术语中,tune选项是位标志GSTX264 EncTune而不是字符串。那么您如何获取屏幕缓冲区?您为什么认为其格式是RGB16?通常我会可能是RGB24或RGB32或类似的格式。甚至可能是某种YUV格式。我现在解决了这个问题。它实际上是RGB而不是RGB16。在我将其更改为RGB后,一切都非常清晰。