gst-rtsp-server 转发rtsp流
2014-06-24 17:22
1256 查看
//以下为rtsp的服务器A 1 #include <gst/gst.h> #include <gst/rtsp-server/rtsp-server.h> #include <gst/rtsp-server/rtsp-session-pool.h> static gboolean timeout (GstRTSPServer * server) { GstRTSPSessionPool *pool; pool = gst_rtsp_server_get_session_pool (server); gst_rtsp_session_pool_cleanup (pool); g_object_unref (pool); return TRUE; } int main (int argc, char *argv[]) { GMainLoop *loop; GstRTSPServer *server; GstRTSPMountPoints *mounts; GstRTSPMediaFactory *factory; GstRTSPMediaFactory *factory1; GstRTSPSessionPool *session; gst_init (&argc, &argv); loop = g_main_loop_new (NULL, FALSE); session = gst_rtsp_session_pool_new(); gst_rtsp_session_pool_set_max_sessions (session, 255); /* 创建服务器实例 */ server = gst_rtsp_server_new (); /* 获取服务器的rtsp流的管理器*/ mounts = gst_rtsp_server_get_mount_points (server); /* 创建两个rtsp的流管理器,设置流的源*/ factory = gst_rtsp_media_factory_new (); factory1 = gst_rtsp_media_factory_new (); gst_rtsp_media_factory_set_launch (factory, "( videotestsrc is-live=1 ! x264enc ! rtph264pay name=pay0 pt=96 )"); gst_rtsp_media_factory_set_launch (factory1, "( " "filesrc location=/home/kkia/Downloads/My.mp4 ! qtdemux name=d " "d. ! queue ! rtph264pay pt=96 name=pay0 " "d. ! queue ! rtpmp4apay pt=97 name=pay1 " ")"); gst_rtsp_media_factory_set_shared (factory, TRUE); gst_rtsp_media_factory_set_shared (factory1, TRUE); /*绑定流的地址,并加入流管理器中*/ gst_rtsp_mount_points_add_factory (mounts, "/test", factory); gst_rtsp_mount_points_add_factory (mounts, "/test1", factory1); g_object_unref (mounts); gst_rtsp_server_attach (server, NULL); g_timeout_add_seconds (2, (GSourceFunc) timeout, server); g_print ("stream ready at rtsp://127.0.0.1:8554/test\n"); g_print ("stream ready at rtsp://127.0.0.1:8554/test1\n"); g_main_loop_run (loop); return 0; }
以上为rtsp的服务器A。
下面将创建rtsp转发服务器B,转发服务器A的rtsp流。
#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; } loop = g_main_loop_new (NULL, FALSE); /* create a server instance */ server = gst_rtsp_server_new (); gst_rtsp_server_set_service (server, "8555");//配置服务器端口 mounts = gst_rtsp_server_get_mount_points (server); factory = gst_rtsp_media_factory_new (); gst_rtsp_media_factory_set_launch (factory, "( rtspsrc location=rtsp://192.168.11.36:8554/test1 ! queue ! rtph264depay ! queue ! rtph264pay name=pay0 pt=96 )" );//此处服务器的源来自主服务器的rtsp,ip地址改成相应的地址。 gst_rtsp_media_factory_set_shared (factory, TRUE); gst_rtsp_mount_points_add_factory (mounts, "/test2", factory); g_object_unref (mounts); 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; }
代码可以在gstreamer中 gst-rtsp-server 源代码examples目录下获取到,只是稍加了修改。
相关文章推荐
- gst-rtsp-server 转发服务器的搭建
- gst-rtsp-server编译测试
- gst-rtsp-server编译测试
- gst-rtsp-server编译测试
- gst-rtsp-server编译测试
- live555 RTSPServer 如何实现转发实时流
- Jetson-tx1 编译gst-rtsp-server-1.8.1
- CentOS6.5安装Darwin Streaming Server搭建RTSP流媒体服务器
- DSS转发手机rtsp的构想
- live555 源码分析:RTSPServer 组件结构
- 基于live555实现的RTSPServer对底层进行性能优化的方法
- 它可以作为一个代理server或者转发java类
- live555库的rtsp服务器源码分析总结,流程详解RTSPServer
- 关于利用ffserver搭建RTSP服务的代码 Streaming with FFServer
- Raspberry PI (Ver 2.0) + PI Cam as a stable RTSP Server
- EasyDarwin流媒体服务器RTSP拉模式流媒体转发模块设计
- Live555源码分析@njzhujinhua[2]:RTSPServer中的用户认证
- Darwin Stream server(DSS服务器)的Relay(中继/转发)设置
- Darwin Stream server(DSS服务器)的Relay(中继/转发)设置
- Darwin Stream server(DSS服务器)的Relay(中继/转发)设置