Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Qt 如何通过udp通过gstreamer发送QImages_Qt_Gstreamer_Qimage - Fatal编程技术网

Qt 如何通过udp通过gstreamer发送QImages

Qt 如何通过udp通过gstreamer发送QImages,qt,gstreamer,qimage,Qt,Gstreamer,Qimage,我使用的是不受支持的v4L摄像头,我需要使用gstreamer将视频流传输到远程Pc。 我已经成功地使用Qt和QImages在主机上传输它。 早些时候我问了一个问题 关于如何将外部帧馈送到gstreamer。 我阅读了博客,并尝试使用gstreamer1.0实现它,但不知何故它并没有按预期工作。 所以我想到了通过gstreamer在同一个网络但在不同的工作站上传输qimages。我想知道是否有人能告诉我如何使用gstreamer 1.0发送Qimages的起点。我不是要代码,只是要一个方向。 我

我使用的是不受支持的v4L摄像头,我需要使用gstreamer将视频流传输到远程Pc。
我已经成功地使用Qt和QImages在主机上传输它。 早些时候我问了一个问题

关于如何将外部帧馈送到gstreamer。
我阅读了博客,并尝试使用gstreamer1.0实现它,但不知何故它并没有按预期工作。
所以我想到了通过gstreamer在同一个网络但在不同的工作站上传输qimages。我想知道是否有人能告诉我如何使用gstreamer 1.0发送Qimages的起点。我不是要代码,只是要一个方向。
我对这种多媒体很陌生,所以如果你能用外行的语言解释一下,我将不胜感激


提前感谢

首先,您需要确定要使用什么协议和编码类型通过UDP进行传输。大多数情况下,我推荐h264而不是RTP

GStreamer提供了大量插件来实现这一点,包括一个名为gst-launch的命令行实用程序。以下是一些基本的发送/接收命令:

gst-launch-1.0 videotestsrc pattern=ball!视频/x-raw,宽度=1280,高度=720!视频转换!x264enc!h264parse!RTPH264支付!udpsink主机=本地主机端口=7777

gst-launch-1.0 udpsrc端口=7777!rtpbin!rtph264depay!德克宾!视频转换!自动视频接收器

当您编写使用GStreamer管道的应用程序时,将帧获取到该管道的最简单方法是使用
appsrc
。所以你可能会有这样的想法:

const char* pipeline = "appsrc name=mysrc caps=video/x-raw,width=1280,height=720,format=RGB ! videoconvert ! x264enc ! h264parse ! rtph264pay ! udpsink host=localhost port=7777";

GError* error(NULL);
GstElement* bin = gst_parse_bin_from_description(tail_pipe_s.c_str(), true, &error);
if(bin == NULL || error != NULL) {
        ...
}

GstElement* appsrc = gst_bin_get_by_name(GST_BIN(bin), "mysrc");

GstAppSrcCallbacks* appsrc_callbacks = (GstAppSrcCallbacks*)malloc(sizeof(GstAppSrcCallbacks));
memset(appsrc_callbacks, 0, sizeof(GstAppSrcCallbacks));
appsrc_callbacks->need_data = need_buffers;
appsrc_callbacks->enough_data = enough_buffers;
gst_app_src_set_callbacks(GST_APP_SRC(appsrc), appsrc_callbacks, (gpointer)your_data, free);

gst_object_unref(appsrc);
然后在后台线程中调用
gst\u app\u src\u push\u buffer
,这将涉及从QImage读取原始数据并将其转换为GstBuffer

也许QT有一些我不知道的更简单的方法。:)