본문 바로가기

삽질/FFMpeg & GStreamer

[GStreamer] Gstreamer RTSP Server source code - Geany

/* GStreamer

 * Copyright (C) 2008 Wim Taymans <wim.taymans at gmail.com>

 *

 * This library is free software; you can redistribute it and/or

 * modify it under the terms of the GNU Library General Public

 * License as published by the Free Software Foundation; either

 * version 2 of the License, or (at your option) any later version.

 *

 * This library is distributed in the hope that it will be useful,

 * but WITHOUT ANY WARRANTY; without even the implied warranty of

 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

 * Library General Public License for more details.

 *

 * You should have received a copy of the GNU Library General Public

 * License along with this library; if not, write to the

 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,

 * Boston, MA 02110-1301, USA.

 */

 

#include <gst/gst.h>

 

#include <gst/rtsp-server/rtsp-server.h>

 

int

main (int argc, char *argv[])

{

  GMainLoop *loop;

  GstRTSPServer *server;

  GstRTSPMountPoints *mounts;

  GstRTSPMediaFactory *factory;

 

  gst_init (&argc, &argv);

 

/*

  if (argc < 2) {

    g_print ("usage: %s <launch line> \n"

        "example: %s \"( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )\"\n",

        argv[0], argv[0]);

    return -1;

  }

*/

argv[1] = "imxv4l2videosrc device=/dev/video0 imx-capture-mode=0 latency=0 ! imxipuvideotransform ! imxvpuenc_h264 bitrate=5000 ! rtph264pay name=pay0 pt=96";

 

  loop = g_main_loop_new (NULL, FALSE);

 

  /* create a server instance */

  server = gst_rtsp_server_new ();

 

  /* 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 = gst_rtsp_media_factory_new ();

  gst_rtsp_media_factory_set_launch (factory, argv[1]);

 

  /* 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 */

  g_print ("stream ready at rtsp://127.0.0.1:8554/test\n");

  g_main_loop_run (loop);

 

  return 0;

}

 

 

 

build command: gcc -Wall -o "%e" "%f" `pkg-config --cflags --libs gstreamer-1.0`  `pkg-config --cflags --libs gstreamer-rtsp-server-1.0` 

'삽질 > FFMpeg & GStreamer' 카테고리의 다른 글

[FFmpeg] FFplay 로 USB Camera(WebCam) Display 하기  (0) 2019.02.14
[Raspberry Pi 3] RTSP Server 설정  (7) 2018.10.18
[GStreamer] GStreamer RTSP 설치  (2) 2017.12.11
[FFMpeg] 명령어  (0) 2017.12.11
[GStreamer] About GStreamer  (0) 2017.12.11