Пытаюсь записать картинку с камеры наблюдения. В консоли работает такая команда:
gst-launch-1.0 rtspsrc location='rtsp://admin:admin@192.168.27.103:554/cam/realmonitor' ! rtph264depay ! mpegtsmux ! filesink location=file.mp4
Картинка записывается, всё работает без замечаний. Но при попытке собрать ту же цепочку в программе на C связывания элементов не происходит.
/*Инициализирую элементы.*/
pipeline = gst_pipeline_new ("rtsp_capture");
source = gst_element_factory_make ("rtspsrc", "rtsp-source");
depayer = gst_element_factory_make ("rtph264depay", "depay");
muxer = gst_element_factory_make ("mpegtsmux", "mpeg-ts-muxer");
sink = gst_element_factory_make ("filesink", "file-output");
/*Задаю location у source и sink из консоли.*/
g_object_set (source, "location", argv[1], NULL);
g_object_set (sink, "location", argv[2], NULL);
/*Засовываю элементы в pipeline.*/
gst_bin_add_many (GST_BIN (pipeline),
source, depayer, muxer, sink, NULL);
/*Связываю элементы.*/
if (!gst_element_link_many (source, depayer, muxer, sink, NULL)) {
g_printerr ("Failed to link elemnts! Exiting.\n");
return 1;
}
После сборки и запуска программа вылетает с ошибкой Failed to link elements. Причём не связываются source и depayer (пробовал использовать функция gst_element_link()). Что не так не пойму. Как получить больше отладочной информации о том почему не происходит связывание?
Вообще, код моей программы это слегка изменённый пример из Your first application.