Я никак не могу решить свою проблему;Есть только больше найденных примеров вопросов.Я получаю кадры в OpenCV и хочу передать их по сети, используя Gstreamer, чтобы на выходе было видео.(OS - Ubuntu, язык - C ++ / C) Например, с другого устройства я мог подключиться и посмотреть этот поток.Можете ли вы сказать или отправить в правильном направлении, пожалуйста?
Я нашел пример кода, прикрепленный к моему вопросу.В этом примере я смог понять, как подключить данные IplImage к буферу Gstreamer, но не могу понять, как передать их по всей сети и посмотреть результат
cout<<"Creating appsink"<<endl;
appsink = gst_element_factory_make("appsink", "asink");
gst_app_sink_set_emit_signals((GstAppSink*)appsink, true);
gst_app_sink_set_drop((GstAppSink*)appsink, true);
gst_app_sink_set_max_buffers((GstAppSink*)appsink, 1);
//creating and initialising pipeline
g_object_set(G_OBJECT(playbin), "video-sink", appsink, NULL);
g_signal_connect(appsink, "new-buffer", G_CALLBACK(DisplayFrame), (gpointer) mark);
//callback function looks like this
gboolean Core::DisplayFrame(GstAppSink *fks, gpointer mark)
{
static bool init = false;
static IplImage *frame;
GstBuffer* buf;
Mark* mk = (Mark*) mark;
if(!init)
{
init = true;
frame = cvCreateImage(cvSize(mk->frame_w, mk->frame_h), IPL_DEPTH_8U, 1);
}
buf = gst_app_sink_pull_buffer(fks);
frame->imageData = (char*)GST_BUFFER_DATA(buf);
ProcessFrame(frame);
gst_buffer_unref(buf);
return true;
}