Example #1
0
void
gss_server_rtsp_init (GssServer * server)
{
  server->rtsp_server = gst_rtsp_server_new ();
  if (getuid () == 0) {
    gst_rtsp_server_set_service (server->rtsp_server, "554");
  } else {
    gst_rtsp_server_set_service (server->rtsp_server, "8554");
  }
}
Example #2
0
static void
gst_rtsp_server_set_property (GObject * object, guint propid,
    const GValue * value, GParamSpec * pspec)
{
  GstRTSPServer *server = GST_RTSP_SERVER (object);

  switch (propid) {
    case PROP_ADDRESS:
      gst_rtsp_server_set_address (server, g_value_get_string (value));
      break;
    case PROP_SERVICE:
      gst_rtsp_server_set_service (server, g_value_get_string (value));
      break;
    case PROP_BACKLOG:
      gst_rtsp_server_set_backlog (server, g_value_get_int (value));
      break;
    case PROP_SESSION_POOL:
      gst_rtsp_server_set_session_pool (server, g_value_get_object (value));
      break;
    case PROP_MEDIA_MAPPING:
      gst_rtsp_server_set_media_mapping (server, g_value_get_object (value));
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, propid, pspec);
  }
}
Example #3
0
void ReStream::ThreadFunc()
{
	try{
		loop = g_main_loop_new (NULL, FALSE);
		//classContext = g_main_context_get_thread_default();

		server = gst_rtsp_server_new ();
		if ( !isLocalStream )
			gst_rtsp_server_set_address (server,ipAddress);
		else
			gst_rtsp_server_set_address (server,"127.0.0.1");
		//gst_rtsp_server_set_service (server, "0");
		mounts = gst_rtsp_server_get_mount_points (server);
		//cout<<"\nin ThreadFunc ---"<<portNo;
		//gst_rtsp_server_set_service (server,portNo);
		gst_rtsp_server_set_service (server,portNo);
		//cout<<"\nin ThreadFunc ---"<<gst_rtsp_server_get_service(server);
		mounts = gst_rtsp_server_get_mount_points (server);
		guint attached = gst_rtsp_server_attach (server, NULL);
		//g_main_context_pop_thread_default(classContext);

		if(attached){
			isServerAttached = true;
			if ( ISDEBUG )
				cout<<"Server Succesfullly attached\n";
			g_main_loop_run (loop);
		}else{
			if ( ISDEBUG )
				cout<<"Failed to attach the server.Exiting From the Code. Free the port first\n";
			exit(0);
			return;
		}

		isServerAttached = false;
		g_object_unref (mounts);
		g_object_unref (server);
		//g_main_loop_unref (loop);

	}
	catch(Exception &e){
		commclass.PrintException("ReStream","CV::ThreadFunc",e);
	}
	catch(exception &e){
		commclass.PrintException("ReStream","STD::ThreadFunc",e);
	}
}
Example #4
0
static GstRTSPServer *
create_rtsp_server (G_GNUC_UNUSED SnraManager * mgr)
{
  GstRTSPServer *server = NULL;

  server = gst_rtsp_server_new ();
  gst_rtsp_server_set_service (server, "5458");

  /* attach the server to the default maincontext */
  if (gst_rtsp_server_attach (server, NULL) == 0)
    goto failed;

  /* start serving */
  return server;

  /* ERRORS */
failed:
  {
    g_print ("failed to attach the server\n");
    gst_object_unref (server);
    return NULL;
  }
}
int
main (int argc, char *argv[])
{
  GMainLoop *loop;
  GstRTSPServer *server;
  GstRTSPMountPoints *mounts;
  GstRTSPMediaFactory *factory;

  gst_init (&argc, &argv);

  if (argc < 1) {
    g_print ("usage: %s [portnum] \n"
        "example: %s 8555 \n"
        "Pipeline is fixed. Default port 8554\n",
        argv[0], argv[0]);
    return -1;
  }

  loop = g_main_loop_new (NULL, FALSE);

  //global_clock = gst_system_clock_obtain ();
  //gst_net_time_provider_new (global_clock, "0.0.0.0", 8554);

  
  /* create a server instance */
  server = gst_rtsp_server_new ();
  
  gint * portnum;
  portnum = malloc(sizeof(gint));
  *portnum = 8554;
  if (argc == 2)
  {
    /* set server listening port*/
    gst_rtsp_server_set_service (server,argv[1]);
    *portnum = atoi(argv[1]);  
  }
  
  
  /* callback for clients */
  g_signal_connect (server, "client-connected", G_CALLBACK (client_connection), portnum);
  

  /* get the mount points for this server, every server has a default object
   * that be used to map uri mount points to media factories */
  mounts = gst_rtsp_server_get_mount_points (server);

  /* make a media factory for a test stream. The default media factory can use
   * gst-launch syntax to create pipelines.
   * any launch line works as long as it contains elements named pay%d. Each
   * element with pay%d names will be a stream */
  factory = test_rtsp_media_factory_new ();
  gst_rtsp_media_factory_set_launch (factory,
      "appsrc name=mysrc ! videoconvert ! x264enc tune=\"zerolatency\" ! rtph264pay pt=96 ! rtpatimetimestamp name=pay0 ntp-offset=0");

  g_signal_connect (factory, "media-configure", (GCallback) media_configure,
      NULL);      
      
  gst_rtsp_media_factory_set_shared (GST_RTSP_MEDIA_FACTORY (factory), TRUE);
  gst_rtsp_media_factory_set_media_gtype (GST_RTSP_MEDIA_FACTORY (factory),
      TEST_TYPE_RTSP_MEDIA);

  /* attach the test factory to the /test url */
  gst_rtsp_mount_points_add_factory (mounts, "/test", factory);

  /* don't need the ref to the mapper anymore */
  g_object_unref (mounts);

  /* attach the server to the default maincontext */
  gst_rtsp_server_attach (server, NULL);

  /* start serving */
  if (argc < 2)
    g_print ("stream ready at rtsp://127.0.0.1:8554/test\n");
  else
  {
    g_print ("stream ready at rtsp://127.0.0.1:");
    g_print (argv[1]);
    g_print ("/test\n");
  }
  g_main_loop_run (loop);

  return 0;
}