38 lines
1.2 KiB
C
38 lines
1.2 KiB
C
|
#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;
|
||
|
}
|