Dear All:
I have port the rtsp test program on the Fedora 11,. The following is the code and it is modified from the test.c in the previous version of gst-plugins-base. I use live555 media server to do the rtsp server. When I built and run it, it will stop when the "PLAY" finishs. I use the sniffer and I am sure the server start to sending the data. After a while, the gst_rtsp_connection_receive return -11. Do someone help me? Thanks! gstream version:0.10.24-1.fc11 gst-plugin-base version:0.10.23-3.fc11 //The console display [felix@Felix-NB test_rtsp]$ ./run parsing url "rtsp://192.168.11.167/sd.ts"... url host: 192.168.11.167 url port: 0 url path: /sd.ts creating connection... opening connection... RTSP request message 0xbfe22800 request line: method: 'DESCRIBE' uri: 'rtsp://192.168.11.167/sd.ts' version: '1.0' headers: key: 'Accept', value: 'application/sdp' body: RTSP response message 0xbfe227e4 status line: code: '200' reason: 'OK' version: '1.0' headers: key: 'CSeq', value: '1' key: 'Date', value: 'Thu, Aug 13 2009 09:38:43 GMT' key: 'Content-Base', value: 'rtsp://192.168.11.167/sd.ts/' key: 'Content-Type', value: 'application/sdp' key: 'Content-Length', value: '376' body: length 377 00000000 (0x87608e0): 76 3d 30 0d 0a 6f 3d 2d 20 31 32 35 30 31 34 37 v=0..o=- 1250147 00000010 (0x87608f0): 39 39 39 36 39 38 31 34 32 20 31 20 49 4e 20 49 999698142 1 IN I 00000020 (0x8760900): 50 34 20 31 30 2e 31 34 34 2e 32 34 2e 38 0d 0a P4 10.144.24.8.. 00000030 (0x8760910): 73 3d 4d 50 45 47 20 54 72 61 6e 73 70 6f 72 74 s=MPEG Transport 00000040 (0x8760920): 20 53 74 72 65 61 6d 2c 20 73 74 72 65 61 6d 65 Stream, streame 00000050 (0x8760930): 64 20 62 79 20 74 68 65 20 4c 49 56 45 35 35 35 d by the LIVE555 00000060 (0x8760940): 20 4d 65 64 69 61 20 53 65 72 76 65 72 0d 0a 69 Media Server..i 00000070 (0x8760950): 3d 73 64 2e 74 73 0d 0a 74 3d 30 20 30 0d 0a 61 =sd.ts..t=0 0..a 00000080 (0x8760960): 3d 74 6f 6f 6c 3a 4c 49 56 45 35 35 35 20 53 74 =tool:LIVE555 St 00000090 (0x8760970): 72 65 61 6d 69 6e 67 20 4d 65 64 69 61 20 76 32 reaming Media v2 000000a0 (0x8760980): 30 30 39 2e 30 37 2e 30 39 0d 0a 61 3d 74 79 70 009.07.09..a=typ 000000b0 (0x8760990): 65 3a 62 72 6f 61 64 63 61 73 74 0d 0a 61 3d 63 e:broadcast..a=c 000000c0 (0x87609a0): 6f 6e 74 72 6f 6c 3a 2a 0d 0a 61 3d 72 61 6e 67 ontrol:*..a=rang 000000d0 (0x87609b0): 65 3a 6e 70 74 3d 30 2d 0d 0a 61 3d 78 2d 71 74 e:npt=0-..a=x-qt 000000e0 (0x87609c0): 2d 74 65 78 74 2d 6e 61 6d 3a 4d 50 45 47 20 54 -text-nam:MPEG T 000000f0 (0x87609d0): 72 61 6e 73 70 6f 72 74 20 53 74 72 65 61 6d 2c ransport Stream, 00000100 (0x87609e0): 20 73 74 72 65 61 6d 65 64 20 62 79 20 74 68 65 streamed by the 00000110 (0x87609f0): 20 4c 49 56 45 35 35 35 20 4d 65 64 69 61 20 53 LIVE555 Media S 00000120 (0x8760a00): 65 72 76 65 72 0d 0a 61 3d 78 2d 71 74 2d 74 65 erver..a=x-qt-te 00000130 (0x8760a10): 78 74 2d 69 6e 66 3a 73 64 2e 74 73 0d 0a 6d 3d xt-inf:sd.ts..m= 00000140 (0x8760a20): 76 69 64 65 6f 20 30 20 52 54 50 2f 41 56 50 20 video 0 RTP/AVP 00000150 (0x8760a30): 33 33 0d 0a 63 3d 49 4e 20 49 50 34 20 30 2e 30 33..c=IN IP4 0.0 00000160 (0x8760a40): 2e 30 2e 30 0d 0a 61 3d 63 6f 6e 74 72 6f 6c 3a .0.0..a=control: 00000170 (0x8760a50): 74 72 61 63 6b 31 0d 0a 00 track1... sdp packet 0xbfe22784: version: '0' origin: username: '-' sess_id: '1250147999698142' sess_version: '1' nettype: 'IN' addrtype: 'IP4' addr: '10.144.24.8' session_name: 'MPEG Transport Stream, streamed by the LIVE555 Media Server' information: 'sd.ts' uri: '(NULL)' connection: nettype: '(NULL)' addrtype: '(NULL)' address: '(NULL)' ttl: '0' addr_number: '0' key: type: '(NULL)' data: '(NULL)' attributes: attribute 'tool' : 'LIVE555 Streaming Media v2009.07.09' attribute 'type' : 'broadcast' attribute 'control' : '*' attribute 'range' : 'npt=0-' attribute 'x-qt-text-nam' : 'MPEG Transport Stream, streamed by the LIVE555 Media Server' attribute 'x-qt-text-inf' : 'sd.ts' medias: media 0: media: 'video' port: '0' num_ports: '4294967295' proto: 'RTP/AVP' formats: format '33' information: '(NULL)' connections: nettype: 'IN' addrtype: 'IP4' address: '0.0.0.0' ttl: '0' addr_number: '0' key: type: '(NULL)' data: '(NULL)' attributes: attribute 'control' : 'track1' setup media 0 setup rtsp://192.168.11.167/sd.ts/track1 RTSP request message 0xbfe22800 request line: method: 'SETUP' uri: 'rtsp://192.168.11.167/sd.ts/track1' version: '1.0' headers: key: 'Transport', value: 'RTP/AVP/UDP;unicast;client_port=30000-30001,RTP/AVP/UDP;multicast,RTP/AVP/TCP' body: RTSP response message 0xbfe227e4 status line: code: '200' reason: 'OK' version: '1.0' headers: key: 'CSeq', value: '2' key: 'Date', value: 'Thu, Aug 13 2009 09:38:43 GMT' key: 'Transport', value: 'RTP/AVP;unicast;destination=192.168.11.168;source=192.168.11.167;client_port=30000-30001;server_port=6972-6973' key: 'Session', value: '52' body: length 0 RTSP request message 0xbfe22800 request line: method: 'PLAY' uri: 'rtsp://192.168.11.167/sd.ts' version: '1.0' headers: key: 'Accept', value: 'npt=0-' body: RTSP response message 0xbfe227e4 status line: code: '200' reason: 'OK' version: '1.0' headers: key: 'CSeq', value: '3' key: 'Date', value: 'Thu, Aug 13 2009 09:38:43 GMT' key: 'Session', value: '52' key: 'RTP-Info', value: 'url=rtsp://192.168.11.167/sd.ts/track1;seq=23957;rtptime=2147510730' body: length 0 error receiving response -11 [felix@Felix-NB test_rtsp]$ ///The code #include <gst/gst.h> #include <gst/rtsp/gstrtspconnection.h> #include <gst/rtsp/gstrtspmessage.h> #include <gst/rtsp/gstrtspurl.h> #include <gst/sdp/gstsdpmessage.h> #include <gst/rtp/gstrtppayloads.h> #include <gst/rtsp/gstrtsprange.h> #include <gst/check/gstcheck.h> #include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtcpbuffer.h> #include <string.h> int main(int argc,char *argv[]) { GstRTSPUrl *pURL; gchar *pURLStr; GMainLoop *g_loop; GstRTSPConnection *pConn; GstRTSPResult nRes; GstRTSPMessage Request_t = { 0 }; GstRTSPMessage Response_t = { 0 }; GstSDPMessage SDP_t = { 0 }; gst_init(&argc,&argv); g_loop = g_main_loop_new (NULL, FALSE); pURLStr="rtsp://192.168.11.167/sd.ts"; //pURLStr="rtsp://thread:5454/south-rtsp.mp3" /*create url */ g_print ("parsing url \"%s\"...\n", pURLStr); nRes = gst_rtsp_url_parse (pURLStr, &pURL); if (nRes <0) { g_print ("error parsing url \"%s\"\n", pURLStr); return (-1); } g_print (" url host: %s\n", pURL->host); g_print (" url port: %d\n", pURL->port); g_print (" url path: %s\n", pURL->abspath); /* create and open connection */ g_print ("creating connection...\n"); nRes = gst_rtsp_connection_create (pURL, &pConn); if (nRes != GST_RTSP_OK) { g_print ("error creating connection to \"%s\"\n", pURLStr); return (-1); } /* open connection */ g_print ("opening connection...\n"); nRes = gst_rtsp_connection_connect (pConn, NULL); if (nRes != GST_RTSP_OK) { g_print ("error opening connection to \"%s\"\n", pURLStr); return (-1); } /* do describe */ { nRes = gst_rtsp_message_init_request (&Request_t, GST_RTSP_DESCRIBE, pURLStr); if (nRes != GST_RTSP_OK) { g_print ("error creating request\n"); return (-1); } gst_rtsp_message_add_header (&Request_t, GST_RTSP_HDR_ACCEPT, "application/sdp"); gst_rtsp_message_dump (&Request_t); nRes = gst_rtsp_connection_send (pConn, &Request_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error sending request\n"); return (-1); } nRes = gst_rtsp_connection_receive (pConn, &Response_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error receiving response\n"); return (-1); } gst_rtsp_message_dump (&Response_t); } /* parse SDP */ { guint8 *data; guint size; gst_rtsp_message_get_body (&Response_t, &data, &size); gst_sdp_message_init (&SDP_t); gst_sdp_message_parse_buffer (data, size, &SDP_t); gst_sdp_message_dump (&SDP_t); } /* do setup */ { gint i; for (i = 0; i < gst_sdp_message_medias_len (&SDP_t); i++) { GstSDPMedia *media; gchar *pSetupURL; gchar *pControlURL; media = gst_sdp_message_get_media (&SDP_t, i); g_print ("setup media %d\n", i); pControlURL = gst_sdp_media_get_attribute_val (media, "control"); pSetupURL = g_strdup_printf ("%s/%s", pURLStr, pControlURL); g_print ("setup %s\n", pSetupURL); nRes = gst_rtsp_message_init_request (&Request_t, GST_RTSP_SETUP, pSetupURL); if (nRes != GST_RTSP_OK) { g_print ("error creating request\n"); return (-1); } gst_rtsp_message_add_header (&Request_t, GST_RTSP_HDR_TRANSPORT, "RTP/AVP/UDP;unicast;client_port=30000-30001,RTP/AVP/UDP;multicast,RTP/AVP/TCP"); //"RTP/AVP;unicast;client_port=5000-5001"); // "RTP/AVP/TCP"); gst_rtsp_message_dump (&Request_t); nRes = gst_rtsp_connection_send (pConn, &Request_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error sending request\n"); return (-1); } nRes = gst_rtsp_connection_receive (pConn, &Response_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error receiving response\n"); return (-1); } gst_rtsp_message_dump (&Response_t); } } /* do play */ { nRes = gst_rtsp_message_init_request (&Request_t, GST_RTSP_PLAY, pURLStr); if (nRes != GST_RTSP_OK) { g_print ("error creating request\n"); return (-1); } gst_rtsp_message_add_header (&Request_t, GST_RTSP_HDR_ACCEPT, "npt=0-"); gst_rtsp_message_dump (&Request_t); nRes = gst_rtsp_connection_send (pConn, &Request_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error sending request\n"); return (-1); } nRes = gst_rtsp_connection_receive (pConn, &Response_t, NULL); if (nRes != GST_RTSP_OK) { g_print ("error receiving response\n"); return (-1); } gst_rtsp_message_dump (&Response_t); } while (TRUE) { nRes = gst_rtsp_connection_receive (pConn, &Response_t, NULL); g_print("%d\n",nRes); if (nRes != GST_RTSP_OK) { g_print ("error receiving response %d\n",nRes); return (-1); } gst_rtsp_message_dump (&Response_t); } /* close connection */ g_print ("closing connection...\n"); nRes = gst_rtsp_connection_close (pConn); if (nRes != GST_RTSP_OK) { g_print ("error closing connection to \"%s\"\n", pURLStr); return (-1); } return 0; } 聰明搜尋和瀏覽網路的免費工具列 — Windows Live 工具列 ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |