RTSP Skew too big, reset skew

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

RTSP Skew too big, reset skew

rsilagi
I'm trying to play an RTSP stream.  If the stream is H.264 it plays fine.  However, when the stream is MPEG2 I get constant "Skew too big" messages and the video does not play.  The RTSP server is displaying the video without problems.  This seems to be something about the source.  If I switch to a different MPEG2 source it plays without problems.

Does anyone have any ideas where to look for this problem and what can I do about it.  I have set GST_DEBUG to *mpeg*:4 to print mpegts and mpeg2decoder;

Here are the warning messages, no error messages;

0:00:03.550437820  7947 0xf4501cc0 WARN        mpegtspacketizer mpegtspacketizer.c:1414:calculate_skew: delta - skew: 0:00:01.956890805 too big, reset skew
0:00:03.583087329  7947 0xf4501cc0 WARN        mpegtspacketizer mpegtspacketizer.c:1414:calculate_skew: delta - skew: 0:00:02.002075371 too big, reset skew
0:00:06.549910647  7947 0xf4501cc0 WARN        mpegtspacketizer mpegtspacketizer.c:1414:calculate_skew: delta - skew: 5124092:33:39.028187818 too big, reset skew
0:00:06.581728657  7947 0xf4501cc0 WARN        mpegtspacketizer mpegtspacketizer.c:1414:calculate_skew: delta - skew: 5124092:33:39.104187833 too big, reset skew

Here is the main parts of the pipeline:

 /* Create the playbin element */
  data.pipeline = gst_element_factory_make ("playbin", NULL);

  /* Setup the URL for the RTSP server. */
  if (BMS_MODE_RTSP)
        g_object_set (data.pipeline, "uri","rtsp://172.16.9.227:554/session_1", NULL);
  else
        g_object_set (data.pipeline, "uri","udp://0.0.0.0:7000", NULL);

  /* Specify the video sink    */
  vsink = gst_element_factory_make ("nvoverlaysink", NULL);
  g_object_set (data.pipeline, "video_sink", vsink, NULL);
  g_object_set (vsink, "sync", FALSE, NULL);
  g_object_set (vsink, "qos", FALSE, NULL);

  /* Connect source-setup signal*/
  if (BMS_MODE_RTSP)
        g_signal_connect (data.pipeline, "source-setup", G_CALLBACK (source_setup), &data);
  else
        g_signal_connect (data.pipeline, "source-setup", G_CALLBACK (source_udp), &data);

  /* Instruct the bus to emit signals for each received message, and
   * connect to the interesting signals
   */
  bus = gst_element_get_bus (data.pipeline);
  gst_bus_add_watch (bus, (GstBusFunc)handle_message, &data);
  gst_object_unref (bus);

  /* Start playing the pipeline */
  gst_element_set_state (data.pipeline, GST_STATE_PLAYING);