Я делаю приложение Gstreamer 1.0 на C. Конвейер построен на основе конфигурации пользователя и «состояния» системы во время выполнения. Поэтому я использую несколько GstElements, которые позже добавляются и связываются с «конвейером GstElement». Вот минимальный пример для лучшего понимания:
GstElement *pipeline = gst_pipeline_new("mypipeline");
...
GstElement *src = gst_element_factory_make("videotestsrc", NULL);
...
gst_bin_add_many(GST_BIN(pipeline), src, enc, pay, NULL);
gst_element_link_many(src, enc, pay, NULL);
...
Затем этот конвейер должен быть запущен с помощью GstRTSPMediaFactory. а>. Проблема, с которой я столкнулся, заключается в том, что gst_rtsp_media_factory_set_launch
принимает только конвейер const gchar *
.
Поэтому мой вопрос: если кто-нибудь из вас знает о функции для
- преобразование
GstElement *pipeline
в представлениеconst gchar*
(что-то вроде обратногоgst_parse
) - или запуск GstRTSPMediaFactory из
GstElement *pipeline
(см. редактирование №1 ниже)
Любая помощь высоко ценится! Спасибо.
РЕДАКТИРОВАНИЕ №1:
Из документации gst-rtsp-server:
Реализация GstRTSPMediaFactory по умолчанию позволяет легко создавать конвейеры GStreamer с использованием синтаксиса gst-launch. Можно создать подкласс GstRTSPMediaFactory, использующий различные методы построения конвейеров.
Поэтому запуск GstRTSPMediaFactory из GstElement технически возможен. Дополнительный вопрос к этому подходу: кто-нибудь знает о такой реализации подкласса GstRTSPMediaFactory?