gst-rtsp-server 轉寄rtsp流

來源:互聯網
上載者:User

標籤:style   class   blog   code   tar   color   

 //以下為rtsp的伺服器A
1 #include <gst/gst.h> 2 3 #include <gst/rtsp-server/rtsp-server.h> 4 #include <gst/rtsp-server/rtsp-session-pool.h> 5 6 static gboolean 7 timeout (GstRTSPServer * server) 8 { 9 GstRTSPSessionPool *pool;10 11 pool = gst_rtsp_server_get_session_pool (server);12 13 gst_rtsp_session_pool_cleanup (pool);14 g_object_unref (pool);15 16 return TRUE;17 }18 19 int20 main (int argc, char *argv[])21 {22 GMainLoop *loop;23 GstRTSPServer *server;24 GstRTSPMountPoints *mounts;25 GstRTSPMediaFactory *factory;26 GstRTSPMediaFactory *factory1;27 GstRTSPSessionPool *session;28 29 gst_init (&argc, &argv);30 31 loop = g_main_loop_new (NULL, FALSE);32 33 session = gst_rtsp_session_pool_new();34 gst_rtsp_session_pool_set_max_sessions (session, 255);35 /* 建立伺服器執行個體 */36 server = gst_rtsp_server_new ();37 38 /* 擷取伺服器的rtsp流的管理器*/39 mounts = gst_rtsp_server_get_mount_points (server);40 41 /* 建立兩個rtsp的流管理器,設定流的源*/42 factory = gst_rtsp_media_factory_new ();43 factory1 = gst_rtsp_media_factory_new ();44 gst_rtsp_media_factory_set_launch (factory,45 "( videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96 )");46 47 gst_rtsp_media_factory_set_launch (factory1,48 "( " 49 "filesrc location=/home/kkia/Downloads/My.mp4 ! qtdemux name=d "50 "d. ! queue ! rtph264pay pt=96 name=pay0 "51 "d. ! queue ! rtpmp4apay pt=97 name=pay1 " ")");52 53 gst_rtsp_media_factory_set_shared (factory, TRUE);54 gst_rtsp_media_factory_set_shared (factory1, TRUE);55 56 /*繫結資料流的地址,並加入流管理器中*/57 gst_rtsp_mount_points_add_factory (mounts, "/test", factory);58 gst_rtsp_mount_points_add_factory (mounts, "/test1", factory1);59 60 g_object_unref (mounts);61 62 gst_rtsp_server_attach (server, NULL); 63 64 g_timeout_add_seconds (2, (GSourceFunc) timeout, server);65 66 g_print ("stream ready at rtsp://127.0.0.1:8554/test\n");67 g_print ("stream ready at rtsp://127.0.0.1:8554/test1\n");68 g_main_loop_run (loop);69 70 return 0;71 }

以上為rtsp的伺服器A。

下面將建立rtsp轉寄伺服器B,轉寄伺服器A的rtsp流。

 1 #include <gst/gst.h> 2  3 #include <gst/rtsp-server/rtsp-server.h> 4  5 int 6 main (int argc, char *argv[]) 7 { 8   GMainLoop *loop; 9   GstRTSPServer *server;10   GstRTSPMountPoints *mounts;11   GstRTSPMediaFactory *factory;12 13   gst_init (&argc, &argv);14 15   if (argc < 2) {16     g_print ("usage: %s <launch line> \n"17         "example: %s \"( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )\"\n",18         argv[0], argv[0]);19     return -1;20   }21 22   loop = g_main_loop_new (NULL, FALSE);23 24   /* create a server instance */25   server = gst_rtsp_server_new ();26   gst_rtsp_server_set_service (server, "8555");//設定管理員連接埠27   mounts = gst_rtsp_server_get_mount_points (server);28 29 30   factory = gst_rtsp_media_factory_new ();31   gst_rtsp_media_factory_set_launch (factory, "( rtspsrc  location=rtsp://192.168.11.36:8554/test1 ! queue ! rtph264depay ! queue ! rtph264pay name=pay0 pt=96 )"32 );//此處伺服器的源來自主伺服器的rtsp,ip地址改成相應的地址。33   gst_rtsp_media_factory_set_shared (factory, TRUE);34 35   gst_rtsp_mount_points_add_factory (mounts, "/test2", factory);36 37   g_object_unref (mounts);38 39   gst_rtsp_server_attach (server, NULL);40 41   /* start serving */42   g_print ("stream ready at rtsp://127.0.0.1:8554/test\n");43   g_main_loop_run (loop);44 45   return 0;46 }

 

代碼可以在gstreamer中 gst-rtsp-server 原始碼examples目錄下擷取到,只是稍加了修改。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.