LINUX.ORG.RU

Сообщения AshYorik

 

Парсинг параметров из txt файла C++

Форум — Development

Доброго дня всем. Можете пожалуйста подсказать, помочь, направить на путь истинный так сказать. Столкнулся с проблемой, вроде бы как в весьма тривиальной задачке. Это всё разумеется из-за отсутствия знаний, которые стремлюсь улучшить. В общем, есть файл “file.txt”, в нем примерно следующего типа строки: Nik = CK Eth = 1500

И мне нужно найти нужную мне строку и оттуда захватить значение (например, на что равен Nik).

На текущий момент я реализовал через ifstream открытие файла, при помощи getline в цикле я из файла в string закидываю. Как вариант решение предполагал следующее: string через push_back закинуть в vector, потом в векторе каждую строку разделить до “=” и проверять на совпадение (через std::find???) и если совпадение есть, то захватить то, что идёт после “=” (как именно??). Правильное ли это решение? Можете помочь как лучше всего это сделать?

 

AshYorik
()

Gstreamer документация

Форум — Multimedia

Добрый день, уважаемые. Не могли подсказать, где можно подробнее почитать про команды gstreamer? Например, что такое payload, clock-rate

 ,

AshYorik
()

Gstreamer стрим на разных подсетях

Форум — Multimedia

Здравствуйте. Делаю стрим используя gstreamer, столкнулся с проблемой. В своей подсети трансляция идёт, а в другую подсеть не идёт. Устройство на другой подсети подключается, но само видео не отображается. Можете подсказать?

 

AshYorik
()

Как в Android Studio открыть сетевой стрим от Gstreamer

Форум — Mobile

Всем привет! Не могли бы подсказать пожалуйста, возможно кто сталкивался с реализацией этого. У меня есть на компьютере приложение, которое используя Gstreamer стримит видео по сети, на компьютере хосте или на другом подключенном к сети я могу используя команду «gst-launch-1.0 -v udpsrc port=5000 caps=„application/x-rtp, media=video, clock-rate=90000, encoding-name=H264, payload=96, ssrc=3394826012, timestamp-offset=2215812541, seqnum-offset=46353“ ! rtph264depay ! decodebin ! videoconvert ! autovideosink sync=false» без проблем открыть видеопоток. Хочу на Android реализовать возможность просмотра, долго искал возможность реализации, в итоге нашел официальные туториалы от Gstreamer под Android Studio (https://stackoverflow.com/questions/45044210/gstreamer-examples-in-android-st...). Билдится и запускается без проблем на конкретном видео на которое имеется прямая ссылка(пример somesite/video.mp4), когда я pipeline поменял на следующее - «data->pipeline = gst_parse_launch(„udpsrc port=5000 ! application/x-rtp, media=video, clock-rate=90000, encoding-name=H264 ! decodebin ! autovideosink sync=false“, &error);» приложение никак не откреагировало и стрим соответственно не запустился. Может быть есть какие предложения или какие-то другие возможности открыть сетевой видеопоток, который на хосте транслируется при помощи Gstreamer.

 , ,

AshYorik
()

Передача по сети изображений в виде видео использованием Gstreamer на C++

Форум — Development

Добрый день. Не могли бы помочь пожалуйста с решением следующей проблемы, хочу передавать по сети используя Gstreamer видео. Но, у меня входящие данные в виде изображений (на вход не получаю видеопоток), собственно возникла необходимость эти изображения транслировать в виде видео, после долгих поисков нашел подходящий код. (там на статичном изображении, это я могу переделать без проблем под свои данные). Код рабочий, указанное изображение без проблем выводит в окошке, но, для меня окошко не нужно и нужно это передавать по сети (чтобы используя айпи и порт в дальнейшем была возможность получить удаленно видео). Проблема с которой столкнулся - не могу понять как правильно сделать чтобы по сети передавались данные. Если есть и проще способ эту задачу решить буду благодарен узнать о них. Заранее огромное спасибо за помочь!

Код прикрепляю:

static GMainLoop *loop;

static void cb_need_data (GstElement *appsrc, guint unused_size, gpointer user_data) { static gboolean white = FALSE; static GstClockTime timestamp = 0; GstBuffer *buffer; guint size,depth,height,width,step,channels; GstFlowReturn ret; IplImage* img; guchar *data1; GstMapInfo map;

img=cvLoadImage(«frame1.jpg»,CV_LOAD_IMAGE_COLOR); height = img->height; width = img->width; step = img->widthStep; channels = img->nChannels; depth = img->depth; data1 = (guchar *)img->imageData; size = height*width*channels;

buffer = gst_buffer_new_allocate (NULL, size, NULL); gst_buffer_map (buffer, &map, GST_MAP_WRITE); memcpy( (guchar *)map.data, data1, gst_buffer_get_size( buffer ) ); /* this makes the image black/white */ //gst_buffer_memset (buffer, 0, white ? 0xff : 0x0, size);

white = !white;

GST_BUFFER_PTS (buffer) = timestamp; GST_BUFFER_DURATION (buffer) = gst_util_uint64_scale_int (1, GST_SECOND, 2);

timestamp += GST_BUFFER_DURATION (buffer);

g_signal_emit_by_name (appsrc, «push-buffer», buffer, &ret);

if (ret != GST_FLOW_OK) { /* something wrong, stop pushing */ g_main_loop_quit (loop); } }

gint main (gint argc, gchar *argv[]) { GstElement *pipeline, *appsrc, *conv, *videosink;

/* init GStreamer */ gst_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE);

/* setup pipeline */ pipeline = gst_pipeline_new («pipeline»); appsrc = gst_element_factory_make («appsrc», «source»); conv = gst_element_factory_make («videoconvert», «conv»); videosink = gst_element_factory_make («autovideosink», «videosink»);

/* setup */ g_object_set (G_OBJECT (appsrc), «caps», gst_caps_new_simple («video/x-raw», «format», G_TYPE_STRING, «RGB», «width», G_TYPE_INT, 640, «height», G_TYPE_INT, 360, «framerate», GST_TYPE_FRACTION, 1, 1, NULL), NULL); gst_bin_add_many (GST_BIN (pipeline), appsrc, conv, videosink, NULL); gst_element_link_many (appsrc, conv, videosink, NULL); //g_object_set (videosink, «device», «/dev/video0», NULL); /* setup appsrc */ g_object_set (G_OBJECT (appsrc), «stream-type», 0, «format», GST_FORMAT_TIME, NULL); g_signal_connect (appsrc, «need-data», G_CALLBACK (cb_need_data), NULL);

/* play */ gst_element_set_state (pipeline, GST_STATE_PLAYING); g_main_loop_run (loop);

/* clean up */ gst_element_set_state (pipeline, GST_STATE_NULL); gst_object_unref (GST_OBJECT (pipeline)); g_main_loop_unref (loop);

return 0; }

 , ,

AshYorik
()

RSS подписка на новые темы