#include #include #include int main(int argc, char* argv[]) { GMainLoop* loop; GstRTSPServer* server; GstRTSPMountPoints* mounts; gst_init(NULL, NULL); loop = g_main_loop_new(NULL, FALSE); server = gst_rtsp_server_new(); gst_rtsp_server_set_service(server, "8554"); mounts = gst_rtsp_server_get_mount_points(server); for (int i = 0; i < 4; i++) { char device[1024] = { 0 }, launch[2048] = { 0 }; sprintf(device, "/dev/video%d", i); sprintf(launch, "( v4l2src device=%s ! videoconvert ! video/x-raw, format=NV12, width=1280, height=720, framerate=25/1 ! videoparse width=1280 height=720 format=nv12 ! clockoverlay time-format=\"%%Y-%%m-%%d %%H:%%M:%%S\"! queue ! mpph264enc ! rtph264pay name=pay0 pt=96 )", device); GstRTSPMediaFactory* factory = gst_rtsp_media_factory_new(); gst_rtsp_media_factory_set_launch(factory, launch); gst_rtsp_media_factory_set_shared(factory, TRUE); gst_rtsp_mount_points_add_factory(mounts, device, factory); g_print(" listern => rtsp://localhost:8554%s\r\n", device); } g_object_unref(mounts); gst_rtsp_server_attach(server, NULL); g_main_loop_run(loop); return 0; }