Android Gstreamer SDK 1.4.3内部数据流错误

时间:2014-11-05 17:07:01

标签: android streaming gstreamer rtsp rtp

我试图在Android Kitkat中运行基本的gstreamer rtsp流媒体应用程序,同时这样做会出现错误,例如

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 'last.first@example.com'
 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:<GstBaseSrc@0xb8a48170> 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:<GstBaseSrc@0xb8a48428> 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:<GstRtpSsrcDemux@0xb8a51010> adding pad 'sink'
0:00:00.425712293   INFO        GST_ELEMENT_PADS gstelement.c:643:gst_element_add_pad:<GstRtpSsrcDemux@0xb8a51010> 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

1 个答案:

答案 0 :(得分:0)

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

depayloader具有静态打击垫,因此您无法在播放期间添加任何打击垫。相反,你应该像解码器和接收器一样链接它。您可以使用gst-inspect-1.0检查打击垫的类型。

由于您没有链接depayloader,因此最终会出现一个未链接的错误。