HxNvr/HxVideoCaptor/external/rtsp-server.c

38 lines
1.2 KiB
C
Raw Permalink Normal View History

2024-01-25 18:38:39 +08:00
#include <gst/gst.h>
#include <gst/rtsp-server/rtsp-server.h>
#include <stdio.h>
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;
}