play a video of mpeg2ts using gstreamer-1.8.2 will be stuck

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

play a video of mpeg2ts using gstreamer-1.8.2 will be stuck

Donghui Bai
This post was updated on .
Hi all,
 
I play a video with url(http://10.9.44.16/xxx.ts) using gstreamer 1.8.2 on Android,
and use the mpegtsdemux(playbin2 automatically linked) as TS demuxer, the playback
will be stuck.

And I found some exception information about PTS in log.log, raw PTS 0:00:02.480000000 &
0:00:03.480000000 all converted to 0:00:01.780000000 with mpegts_packetizer_pts_to_ts.
-----------------------------------------------------------------------------------
08-11 13:36:02.066 15966 16948 D libchplayer: [mpegtspacketizer.c:2256] <mpegtspacketizer> Using current First PCR:0:00:00.700000000 offset:564 PCR_offset:0:00:00.000000000
08-11 13:36:02.066 15966 16948 E libchplayer: [mpegtspacketizer.c:2327] <mpegtspacketizer> Returning timestamp 0:00:01.780000000 for pts 0:00:02.480000000 pcr_pid:0x0100
08-11 13:36:02.066 15966 16948 D libchplayer: [tsdemux.c:2117] <tsdemux> stream PTS 0:00:01.780000000 DTS 99:99:99.999999999
08-11 13:36:02.071 15966 16948 D libchplayer: [tsdemux.c:2502] <tsdemux> stream:0xb8201620, pid:0x0100 stream_type:27 state:2
08-11 13:36:02.071 15966 16948 D libchplayer: [tsdemux.c:2656] <tsdemux> stream->pts 0:00:01.780000000
08-11 13:36:02.071 15966 16948 E libchplayer: [tsdemux.c:2677] <tsdemux> Pushing buffer with pid: 256 , PTS: 0:00:01.780000000 , DTS: 99:99:99.999999999
......
08-11 13:36:02.446 15966 16948 D libchplayer: [mpegtspacketizer.c:2256] <mpegtspacketizer> Using current First PCR:0:00:02.700000000 offset:226352 PCR_offset:0:00:01.000000000
08-11 13:36:02.446 15966 16948 E libchplayer: [mpegtspacketizer.c:2327] <mpegtspacketizer> Returning timestamp 0:00:01.780000000 for pts 0:00:03.480000000 pcr_pid:0x0100
08-11 13:36:02.446 15966 16948 D libchplayer: [tsdemux.c:2117] <tsdemux> stream PTS 0:00:01.780000000 DTS 0:00:01.700000000
08-11 13:36:02.616 15966 16948 E libchplayer: [tsdemux.c:2677] <tsdemux> Pushing buffer with pid: 256 , PTS: 0:00:01.780000000 , DTS: 0:00:01.700000000
......
-----------------------------------------------------------------------------------

I guess it result in stuck, and modify mpegts_packetizer_pts_to_ts that use raw PTS as
return value, then the playback is OK.  
-----------------------------------------------------------------------------------
//mpegtspacketizer.c
GstClockTime
mpegts_packetizer_pts_to_ts (MpegTSPacketizer2 * packetizer,
    GstClockTime pts, guint16 pcr_pid)
{
    ......
    if (refpcr != G_MAXINT64)
      /*
      res =
          pts - PCRTIME_TO_GSTTIME (refpcr) + PCRTIME_TO_GSTTIME (refpcroffset);
      */
      res = pts;
    else
      GST_WARNING ("No groups, can't calculate timestamp");
    ......
}
-----------------------------------------------------------------------------------

Is this some kind of bug, or am I missing something?
The TS video info can see tsinfo.txt.

Best regards,
Bai