2014-11-05 120 views
0

我试图运行在Android中奇巧一个基本的GStreamer RTSP流媒体应用,并且同时也获得类似错误的Android SDK的Gstreamer 1.4.3内部数据流错误

basesrc gstbasesrc.c:2933:gst_base_src_loop:错误:内部数据流错误。 basesrc gstbasesrc.c:2933:gst_base_src_loop:错误:流任务暂停,原因未链接(-1)

从日志中看来,RTSP通信正在发生,但RTP流不起飞。

正在使用GstreamerSDK 1.4.3。该应用程序的源代码是...

#include <gst/gst.h> 
#include <glib.h> 
#include <gio/gio.h> 
#include <dlfcn.h> 
#include <arpa/inet.h> 
#include <netinet/in.h> 
#include <stdio.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <unistd.h> 

GST_PLUGIN_STATIC_REGISTER(coreelements); 
GST_PLUGIN_STATIC_REGISTER(adder); 
GST_PLUGIN_STATIC_REGISTER(app); 
GST_PLUGIN_STATIC_REGISTER(videoconvert); 
GST_PLUGIN_STATIC_REGISTER(gdp); 
GST_PLUGIN_STATIC_REGISTER(gio); 
GST_PLUGIN_STATIC_REGISTER(pango); 
GST_PLUGIN_STATIC_REGISTER(typefindfunctions); 
GST_PLUGIN_STATIC_REGISTER(videorate); 
GST_PLUGIN_STATIC_REGISTER(videoscale); 
GST_PLUGIN_STATIC_REGISTER(videotestsrc); 
GST_PLUGIN_STATIC_REGISTER(volume); 
GST_PLUGIN_STATIC_REGISTER(autodetect); 
GST_PLUGIN_STATIC_REGISTER(videofilter); 
GST_PLUGIN_STATIC_REGISTER(x264); 
GST_PLUGIN_STATIC_REGISTER(libav); 
GST_PLUGIN_STATIC_REGISTER(subparse); 
GST_PLUGIN_STATIC_REGISTER(auparse); 
GST_PLUGIN_STATIC_REGISTER(multipart); 
GST_PLUGIN_STATIC_REGISTER(fragmented); 
GST_PLUGIN_STATIC_REGISTER(subenc); 
GST_PLUGIN_STATIC_REGISTER(videoparsersbad); 
GST_PLUGIN_STATIC_REGISTER(androidmedia); 
GST_PLUGIN_STATIC_REGISTER(tcp); 
GST_PLUGIN_STATIC_REGISTER(rtsp); 
GST_PLUGIN_STATIC_REGISTER(rtp); 
GST_PLUGIN_STATIC_REGISTER(rtmp); 
GST_PLUGIN_STATIC_REGISTER(rtpmanager); 
GST_PLUGIN_STATIC_REGISTER(soup); 
GST_PLUGIN_STATIC_REGISTER(udp); 
GST_PLUGIN_STATIC_REGISTER(dataurisrc); 
GST_PLUGIN_STATIC_REGISTER(sdp); 

static gboolean 
bus_call (GstBus  *bus, 
     GstMessage *msg, 
     gpointer data) 
{ 
GMainLoop *loop = (GMainLoop *) data; 

switch (GST_MESSAGE_TYPE (msg)) { 

case GST_MESSAGE_EOS: 
    g_print ("End of stream\n"); 
    g_main_loop_quit (loop); 
    break; 

case GST_MESSAGE_ERROR: { 
    gchar *debug; 
    GError *error; 

    gst_message_parse_error (msg, &error, &debug); 
    g_free (debug); 

    g_printerr ("Error: %s\n", error->message); 
    g_error_free (error); 

    g_main_loop_quit (loop); 
    break; 
} 
default: 
    break; 
} 

return TRUE; 
} 

static void on_pad_added (GstElement *element, GstPad *pad, void *data) 
{ 
GstElement *depay = GST_ELEMENT (data); 
GstPad *sinkpad; 

g_print ("on_pad_added\n"); 
sinkpad = gst_element_get_static_pad (depay, "sink"); 

if(!sinkpad) 
    g_print ("error - get static pad on the queue failed\n"); 

gst_pad_link (pad, sinkpad); 
gst_object_unref (sinkpad); 
} 

/* Listen for element's state change */ 
static void on_state_changed (GstBus *bus, GstMessage *msg, gpointer user_data) 
{ 
    GstState old_state, new_state, pending_state; 
    GstElement* pipeline = (GstElement*)user_data; 

    gst_message_parse_state_changed (msg, &old_state, &new_state, &pending_state); 

    if(GST_MESSAGE_SRC(msg) == pipeline) 
    { 
     g_print("Pipeline state changed to %s\n", gst_element_state_get_name(new_state)); 
    } 
} 


int main (int argc, 
    char *argv[]) 
{ 
    GMainLoop *loop; 

    GstElement *pipeline, *source, *parser, *decoder, *conv, *sink, *video_scale, *decodebin, *depay, *queue, *bin; 
    GstBus *bus; 
    guint bus_watch_id; 
    CustomData *data; 
    GSource *bus_source; 
    GError *error = NULL; 
    pthread_t tid; 

    /* Initialisation */ 
    gst_init (&argc, &argv); 

    gst_android_register_static_plugins(); 

    loop = g_main_loop_new (NULL, FALSE); 


    /* Check input arguments */ 
    if (argc < 2) { 
     g_printerr ("Usage: RunPipe <infilepath> \n"); 
     return -1; 
    } 

    /* Create gstreamer elements */ 
    pipeline = gst_pipeline_new ("video-player"); 
    source = gst_element_factory_make ("rtspsrc",  "rtspsrc-source"); 
    depay = gst_element_factory_make ("rtph264depay",  "rtp-depacketizer"); 
    decoder = gst_element_factory_make ("avdec_h264",  "h264-decoder"); 
    sink  = gst_element_factory_make ("filesink", "file-sink"); 

    if (!pipeline) { 
     g_printerr ("pipeline could not be created. Exiting.\n"); 
     return -1; 
    } 

    if (!source) { 
     g_printerr ("source could not be created. Exiting.\n"); 
     return -1; 
    } 

    if (!depay) { 
     g_printerr ("depay element could not be created. Exiting.\n"); 
     return -1; 
    } 

    if (!decoder) { 
     g_printerr ("decoder element could not be created. Exiting.\n"); 
     return -1; 
    } 

    if (!sink) { 
     g_printerr ("sink element could not be created. Exiting.\n"); 
     return -1; 
    } 


    /* Set up the pipeline */ 
    /* we set the input filename to the source element */ 
    g_object_set (G_OBJECT (source), "location", argv[1], NULL); 
    g_object_set (G_OBJECT (source), "debug", TRUE, NULL); 
    g_object_set (G_OBJECT (source), "latency", 100, NULL); 
    g_object_set (G_OBJECT (source), "protocols", 0x00000005, NULL); 
    g_object_set (G_OBJECT (source), "do-rtcp", TRUE, NULL); 
    g_object_set (G_OBJECT (source), "nat-method", 0, NULL); 

    g_object_set (G_OBJECT (sink), "location", "/data/abc.yuv", NULL); 

    g_signal_connect (source , "pad-added", G_CALLBACK (on_pad_added), depay); 
    g_signal_connect (depay , "pad-added", G_CALLBACK (on_pad_added), decoder); 


    /* we add a message handler */ 
    bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); 
    gst_bus_enable_sync_message_emission (bus); 
    gst_bus_add_signal_watch (bus); 

    g_signal_connect (G_OBJECT (bus), "message::state-changed", (GCallback) on_state_changed, pipeline); 

    gst_bin_add_many (GST_BIN (pipeline), 
       source, depay, decoder, sink, NULL); 

    gst_element_set_state (pipeline, GST_STATE_READY); 

    /* we link the elements together */ 
    gst_element_link_many (decoder, sink, NULL); 

    gst_element_set_state (pipeline, GST_STATE_PAUSED); 

    /* Set the pipeline to "playing" state*/ 
    g_print ("Now playing: %s\n", argv[1]); 
    gst_element_set_state (pipeline, GST_STATE_PLAYING); 

    /* Iterate */ 
    g_print ("Running...\n"); 
    g_main_loop_run (loop); 


    /* Out of the main loop, clean up nicely */ 
    g_print ("Returned, stopping playback\n"); 
    gst_element_set_state (pipeline, GST_STATE_NULL); 

    g_print ("Deleting pipeline\n"); 
    gst_object_unref (bus); 
    gst_object_unref (GST_OBJECT (pipeline)); 

    return 0; 
} 

我试了几个建议,但没有什么可以解决这个问题。还分析了DOT图像,但可以得到任何线索。任何帮助将不胜感激。由于字符数量限制而附加部分日志。

changed state to 4(PLAYING) successfully 
Running... 
Pipeline state changed to READY 
Pipeline state changed to PAUSED 
RTSP request message 0xb2e08be8 
request line: 
    method: 'OPTIONS' 
    uri: 'rtsp://192.168.0.8:556/can_smallest.mp4' 
    version: '1.0' 
headers: 
body: 
RTSP response message 0xb2e08c14 
status line: 
    code: '200' 
    reason: 'OK' 
    version: '1.0' 
headers: 
    key: 'CSeq', value: '1' 
    key: 'Public', value: 'DESCRIBE' 
    key: 'Public', value: 'SETUP' 
    key: 'Public', value: 'TEARDOWN' 
    key: 'Public', value: 'PLAY' 
    key: 'Public', value: 'PAUSE' 
    key: 'Public', value: 'OPTIONS' 
body: length 0 
RTSP request message 0xb2e08be8 
request line: 
    method: 'DESCRIBE' 
    uri: 'rtsp://192.168.0.8:556/can_smallest.mp4' 
    version: '1.0' 
headers: 
    key: 'Accept', value: 'application/sdp' 
body: 
RTSP response message 0xb2e08c14 
status line: 
    code: '200' 
    reason: 'OK' 
    version: '1.0' 
headers: 
    key: 'Server', value: 'testserver' 
    key: 'CSeq', value: '2' 
    key: 'Last-Modified', value: 'Mon, 28 Feb 2005 12:29:26 GMT' 
    key: 'Content-Length', value: '464' 
    key: 'Date', value: 'Wed, 21 Feb 2007 05:40:13 GMT' 
    key: 'Expires', value: 'Wed, 21 Feb 2007 05:40:13 GMT' 
    key: 'Content-Type', value: 'application/sdp' 
    key: 'Content-Base', value: 'rtsp://192.168.0.8:556/can_smallest.mp4' 
body: length 465 
             .    
sdp packet 0xb8a475b0: 
version:  '0' 
origin: 
    username:  'teststreamingserver' 
    sess_id:  '2001' 
    sess_version: '2005' 
    nettype:  'IN' 
    addrtype:  'IP4' 
    addr:   '' 
session_name: '\can_smallest.mp4' 
information: '(NULL)' 
uri:   'http://example.com' 
emails: 
    email '[email protected]' 
phones: 
    phone '123-456-789' 
connection: 
    nettype:  'IN' 
    addrtype:  'IP4' 
    address:  '' 
    ttl:   '0' 
    addr_number: '0' 
bandwidths: 
    type:   'AS' 
    bandwidth: '50' 
key: 
    type:   '(NULL)' 
    data:   '(NULL)' 
attributes: 
    attribute 'control' : '*' 
    attribute 'range' : 'npt=0.000000-39.681999' 
medias: 
    media 0: 
    media:  'video' 
    port:  '0' 
    num_ports: '0' 
    proto:  'RTP/AVP' 
    formats: 
    format '96' 
    information: '(NULL)' 
    bandwidths: 
    type:   'AS' 
    bandwidth: '2097151' 
    key: 
    type:  '(NULL)' 
    data:  '(NULL)' 
    attributes: 
    attribute 'control' : 'rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1' 
    attribute 'rtpmap' : '96 H264/90000' 
    attribute 'framesize' : '96 32-24' 
    attribute 'fmtp' : '96 packetization-mode=1;profile-level-id=676400;sprop-parameter-sets=Z2QACazZSX5cBEAAAAMAQAAADCPEiWWA,aOvssiw=' 
0:00:00.391975105 INFO  GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "udpsrc" 
0:00:00.392144844 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<[email protected]> adding pad 'src' 
0:00:00.392450782 INFO     udpsrc gstudpsrc.c:898:gst_udpsrc_open:<udpsrc0> setting udp buffer of 524288 bytes 
0:00:00.392521563 INFO     udpsrc gstudpsrc.c:918:gst_udpsrc_open:<udpsrc0> have udp buffer of 1048576 bytes 
0:00:00.392647136 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to READY 
0:00:00.392713907 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed NULL to READY (VOID_PENDING pending) 
0:00:00.392899219 INFO  GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "udpsrc" 
0:00:00.393008073 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<[email protected]> adding pad 'src' 
0:00:00.393262865 INFO     udpsrc gstudpsrc.c:918:gst_udpsrc_open:<udpsrc1> have udp buffer of 163840 bytes 
0:00:00.393381250 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc1> completed state change to READY 
0:00:00.393451042 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed NULL to READY (VOID_PENDING pending) 
RTSP request message 0xb2e08bbc 
request line: 
    method: 'SETUP' 
    uri: 'rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1' 
    version: '1.0' 
headers: 
    key: 'Transport', value: 'RTP/AVP;unicast;client_port=43198-43199' 
body: 
RTSP response message 0xb2e08be8 
status line: 
    code: '200' 
    reason: 'OK' 
    version: '1.0' 
headers: 
    key: 'Server', value: 'testserver' 
    key: 'CSeq', value: '3' 
    key: 'Last-Modified', value: 'Mon, 28 Feb 2005 12:29:26 GMT' 
    key: 'Cache-Control', value: 'must-revalidate' 
    key: 'Session', value: '20007ac820007ac8' 
    key: 'Date', value: 'Wed, 21 Feb 2007 05:40:13 GMT' 
    key: 'Expires', value: 'Wed, 21 Feb 2007 05:40:13 GMT' 
    key: 'Transport', value: 'RTP/AVP/UDP;unicast;source=;client_port=-22338--22337;server_port=4000-4001;ssrc=0000181C' 
body: length 0 
0:00:00.423977500 INFO  GST_ELEMENT_FACTORY gstelementfactory.c:362:gst_element_factory_create: creating element "rtpbin" named "manager" 
0:00:00.424180938 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<manager> committing state from NULL to READY, pending PAUSED, next PAUSED 
0:00:00.424255782 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed NULL to READY (PAUSED pending) 
0:00:00.424420418 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<manager> continue state change READY to PAUSED, final PAUSED 
0:00:00.424506980 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<manager> completed state change to PAUSED 
0:00:00.424570209 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 
0:00:00.424837136 INFO  GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'recv_rtp_sink_0' in element "manager" 
0:00:00.424917397 INFO  GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "rtpsession" 
0:00:00.425484324 INFO  GST_ELEMENT_FACTORY gstelementfactory.c:364:gst_element_factory_create: creating element "rtpssrcdemux" 
0:00:00.425606303 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<[email protected]> adding pad 'sink' 
0:00:00.425712293 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<[email protected]> adding pad 'rtcp_sink' 
0:00:00.425938855 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<rtpssrcdemux0> committing state from NULL to READY, pending PAUSED, next PAUSED 
0:00:00.426012136 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed NULL to READY (PAUSED pending) 
0:00:00.426165157 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<rtpssrcdemux0> continue state change READY to PAUSED, final PAUSED 
0:00:00.426247032 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to PAUSED 
0:00:00.426313074 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 
0:00:00.426459376 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<rtpsession0> committing state from NULL to READY, pending PAUSED, next PAUSED 
0:00:00.426528699 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed NULL to READY (PAUSED pending) 
0:00:00.426668126 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<rtpsession0> continue state change READY to PAUSED, final PAUSED 
0:00:00.426740105 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to PAUSED 
0:00:00.426802032 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed READY to PAUSED (VOID_PENDING pending) 
0:00:00.426944584 INFO  GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'recv_rtp_sink' in element "rtpsession0" 
0:00:00.427094011 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<rtpsession0> adding pad 'recv_rtp_sink' 
0:00:00.427231824 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<rtpsession0> adding pad 'recv_rtp_src' 
0:00:00.427505834 INFO    GST_PADS gstpad.c:2186:gst_pad_link_prepare: trying to link recv_rtp_sink_0:proxypad0 and rtpsession0:recv_rtp_sink 
0:00:00.427583490 INFO    GST_PADS gstpad.c:2388:gst_pad_link_full: linked recv_rtp_sink_0:proxypad0 and rtpsession0:recv_rtp_sink, successful 
0:00:00.427651199 INFO    GST_EVENT gstevent.c:1373:gst_event_new_reconfigure: creating reconfigure event 
0:00:00.427740834 INFO  GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<manager> adding pad 'recv_rtp_sink_0' 
0:00:00.427815001 INFO  GST_ELEMENT_PADS gstelement.c:895:gst_element_get_static_pad: found pad rtpsession0:recv_rtp_src 
0:00:00.427887345 INFO  GST_ELEMENT_PADS gstelement.c:895:gst_element_get_static_pad: found pad rtpssrcdemux0:sink 
0:00:00.427966876 INFO    GST_PADS gstpad.c:2186:gst_pad_link_prepare: trying to link rtpsession0:recv_rtp_src and rtpssrcdemux0:sink 
0:00:00.428036355 INFO    GST_PADS gstpad.c:2388:gst_pad_link_full: linked rtpsession0:recv_rtp_src and rtpssrcdemux0:sink, successful 
0:00:00.428108595 INFO    GST_EVENT gstevent.c:1373:gst_event_new_reconfigure: creating reconfigure event 

0:00:40.562537627 INFO    GST_EVENT gstevent.c:759:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration  0:00:39.681999000 
RTSP request message 0xb2e08bec 
request line: 
    method: 'PLAY' 
    uri: 'rtsp://192.168.0.8:556/can_smallest.mp4' 
    version: '1.0' 
headers: 
    key: 'Range', value: 'npt=0-' 
body: 
0:00:40.564684015 16036 0xb8a468f0 INFO  GST_ELEMENT_PADS gstelement.c:892:gst_element_get_static_pad: no such pad 'sink' in element "udpsrc1" 
0:00:40.565839765 16036 0xb8a468f0 INFO    GST_EVENT gstevent.c:678:gst_event_new_caps: creating caps event application/x-rtcp 
RTSP response message 0xb2e08c18 
status line: 
    code: '200' 
    reason: 'OK' 
    version: '1.0' 
headers: 
    key: 'CSeq', value: '4' 
    key: 'Server', value: 'testserv' 
    key: 'Session', value: '20007ac820007ac8' 
    key: 'Scale', value: '-0.000000' 
    key: 'Range', value: 'npt=0.000000-1.000000' 
    key: 'RTP-Info', value: 'url=rtsp://192.168.0.8:556/can_smallest.mp4/trackID=1;seq=5103;rtptime=1777208127' 
body: length 0 
0:00:42.038357285 16036 0xb8a46890 INFO    GST_EVENT gstevent.c:678:gst_event_new_caps: creating caps event application/x-rtcp 
0:00:42.039331595 16036 0xb8a46890 INFO    GST_EVENT gstevent.c:759:gst_event_new_segment: creating segment event time segment start=0:00:00.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1.000000, applied_rate=1.000000, flags=0x00, time=0:00:00.000000000, base=0:00:00.000000000, position 0:00:00.000000000, duration 99:99:99.999999999 
0:00:45.566325490 INFO    GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpssrcdemux0> current PLAYING pending VOID_PENDING, desired next PAUSED 
0:00:45.566720775 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to PAUSED 
0:00:45.567005614 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed PLAYING to PAUSED (VOID_PENDING pending) 
0:00:45.567820502 INFO    GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpssrcdemux0' changed state to 3(PAUSED) successfully 
0:00:45.568193813 INFO    GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpsession0> current PLAYING pending VOID_PENDING, desired next PAUSED 
0:00:45.568813272 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to PAUSED 
0:00:45.569093215 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed PLAYING to PAUSED (VOID_PENDING pending) 
0:00:45.570539383 INFO    GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpsession0' changed state to 3(PAUSED) successfully 
0:00:45.570889730 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<manager> committing state from PLAYING to PAUSED, pending READY, next READY 
0:00:45.571186285 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed PLAYING to PAUSED (READY pending) 
0:00:45.572885735 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<manager> continue state change PAUSED to READY, final READY 
0:00:45.574231298 INFO    GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpssrcdemux0> current PAUSED pending VOID_PENDING, desired next READY 
0:00:45.574915390 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpssrcdemux0> completed state change to READY 
0:00:45.575195860 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpssrcdemux0> notifying about state-changed PAUSED to READY (VOID_PENDING pending) 
0:00:45.577369370 INFO    GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpssrcdemux0' changed state to 2(READY) successfully 
0:00:45.579579801 INFO    GST_STATES gstbin.c:2230:gst_bin_element_set_state:<rtpsession0> current PAUSED pending VOID_PENDING, desired next READY 
0:00:45.583540695 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<rtpsession0> completed state change to READY 
0:00:45.585652339 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<rtpsession0> notifying about state-changed PAUSED to READY (VOID_PENDING pending) 
0:00:45.589310404 INFO    GST_STATES gstbin.c:2673:gst_bin_change_state_func:<manager> child 'rtpsession0' changed state to 2(READY) successfully 
0:00:45.592431046 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<manager> completed state change to READY 
0:00:45.595299608 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<manager> notifying about state-changed PAUSED to READY (VOID_PENDING pending) 
0:00:45.598642573 16036 0xb8a468c0 INFO     basesrc gstbasesrc.c:2724:gst_base_src_loop:<udpsrc0> pausing after gst_base_src_get_range() = flushing 
0:00:45.598998830 16036 0xb8a468c0 INFO     task gsttask.c:301:gst_task_func:<udpsrc0:src> Task going to paused 
0:00:45.600470312 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<udpsrc0> committing state from PLAYING to PAUSED, pending READY, next READY 
0:00:45.602734506 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed PLAYING to PAUSED (READY pending) 
0:00:45.604942723 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<udpsrc0> continue state change PAUSED to READY, final READY 
0:00:45.606568784 16036 0xb8a468c0 INFO     task gsttask.c:303:gst_task_func:<udpsrc0:src> Task resume from paused 
0:00:45.607717244 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to READY 
0:00:45.608986680 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed PAUSED to READY (VOID_PENDING pending) 
0:00:45.611940554 16036 0xb8a468f0 INFO     basesrc gstbasesrc.c:2724:gst_base_src_loop:<udpsrc1> pausing after gst_base_src_get_range() = flushing 
0:00:45.612250362 16036 0xb8a468f0 INFO     task gsttask.c:301:gst_task_func:<udpsrc1:src> Task going to paused 
0:00:45.612590479 INFO    GST_STATES gstelement.c:2303:gst_element_continue_state:<udpsrc1> committing state from PLAYING to PAUSED, pending READY, next READY 
0:00:45.614020729 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed PLAYING to PAUSED (READY pending) 
0:00:45.617100318 INFO    GST_STATES gstelement.c:2310:gst_element_continue_state:<udpsrc1> continue state change PAUSED to READY, final READY 
0:00:45.619118298 16036 0xb8a468f0 INFO     task gsttask.c:303:gst_task_func:<udpsrc1:src> Task resume from paused 
0:00:45.619331663 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc1> completed state change to READY 
0:00:45.619586169 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc1> notifying about state-changed PAUSED to READY (VOID_PENDING pending) 

RTSP request message 0xb2e08c18 
request line: 
    method: 'TEARDOWN' 
    uri: 'rtsp://192.168.0.8:556/can_smallest.mp4' 
    version: '1.0' 
headers: 
body: 
RTSP response message 0xb2e08c44 
status line: 
    code: '200' 
    reason: 'OK' 
    version: '1.0' 
headers: 
    key: 'CSeq', value: '5' 
    key: 'Server', value: 'testserv' 
    key: 'Session', value: '20007ac820007ac8' 
    key: 'Connection', value: 'Close' 
body: length 0 
0:00:45.633186296 INFO    GST_STATES gstelement.c:2328:gst_element_continue_state:<udpsrc0> completed state change to NULL 
0:00:45.633262019 INFO    GST_STATES gstelement.c:2233:_priv_gst_element_state_changed:<udpsrc0> notifying about state-changed READY to NULL (VOID_PENDING pending) 

0:00:45.650815163 INFO   GST_PARENTAGE gstbin.c:1554:gst_bin_remove_func:<manager> removed child "rtpsession0" 
0:00:45.651069523 INFO   GST_REFCOUNTING gstelement.c:2873:gst_element_dispose:<rtpsession0> dispose 
0:00:45.651315133 INFO   GST_REFCOUNTING gstelement.c:2917:gst_element_dispose: 
0:00:45.655121646 INFO   GST_REFCOUNTING gstelement.c:2953:gst_element_finalize:<manager> finalize parent 
0:00:45.655418127 WARN     rtspsrc gstrtspsrc.c:4847:gst_rtspsrc_reconnect:<rtspsrc-source> warning: Could not receive any UDP packets for 5.0000 seconds, maybe your firewall is blocking it. Retrying using a TCP connection. 
0:00:45.655915943 INFO  GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<rtspsrc-source> posting message: Could not read from resource. 
0:00:45.656420217 INFO  GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<rtspsrc-source> posted warning message: Could not read from resource. 
0:01:05.678280907 ERROR    default gstrtspconnection.c:877:gst_rtsp_connection_connect: failed to connect: Could not connect to 192.168.0.8: Socket I/O timed out 
0:01:05.678675900 ERROR    rtspsrc gstrtspsrc.c:4196:gst_rtsp_conninfo_connect:<rtspsrc-source> Could not connect to server. (Generic error) 
0:01:05.678974905 WARN     rtspsrc gstrtspsrc.c:6858:gst_rtspsrc_retrieve_sdp:<rtspsrc-source> error: Failed to connect. (Generic error) 
0:01:05.679482655 INFO  GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<rtspsrc-source> posting message: Could not open resource for reading and writing. 
0:01:05.680319462 INFO  GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<rtspsrc-source> posted error message: Could not open resource for reading and writing. 
0:01:05.680756433 WARN     rtspsrc gstrtspsrc.c:6937:gst_rtspsrc_open:<rtspsrc-source> can't get sdp 
0:01:05.681004918 WARN     rtspsrc gstrtspsrc.c:5040:gst_rtspsrc_loop:<rtspsrc-source> we are not connected 
0:01:05.681261319 INFO     task gsttask.c:301:gst_task_func:<task0> Task going to paused 

回答

0
g_signal_connect (depay , "pad-added", G_CALLBACK (on_pad_added), decoder); 

的depayloader具有静态垫,所以你不会得到在播放过程中添加任何垫。相反,您应该像解码器和接收器那样链接它。您可以使用gst-inspect-1.0检查打击垫的类型。

由于您没有链接depayloader,所以最终会出现未链接的错误。