[Bug 760980] New: [splitmuxsink] corrupt output when receiving H264 in RTP over UDP and using mpegtsmux

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Fri Jan 22 02:42:22 PST 2016


https://bugzilla.gnome.org/show_bug.cgi?id=760980

            Bug ID: 760980
           Summary: [splitmuxsink] corrupt output when receiving H264 in
                    RTP over UDP and using mpegtsmux
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: arjen.veenhuizen at tno.nl
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

We observe that splitmuxsink+mpegtsmux generates corrupt segments when
receiving H264 in RTP over UDP. (Note: mp4mux works just fine)

Sender pipeline:
gst-launch-1.0 -eevv  videotestsrc ! capsfilter
caps="video/x-raw,format=I420,width=1280,height=720,framerate=(fraction)25/1" !
queue ! x264enc key-int-max=25 bitrate=3096 option-string="no-scenecut"
bframes=0 ! h264parse config-interval=1 ! rtph264pay ! udpsink port=5004

Receiver pipeline to make sure data is received correctly:
gst-launch-1.0 -eeevv  udpsrc port=5004 caps="application/x-rtp,
media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264,
packetization-mode=(string)1, profile-level-id=(string)64001f,payload=(int)96,
ssrc=(uint)2359631590, timestamp-offset=(uint)1144720463,
seqnum-offset=(uint)20301" ! rtpjitterbuffer ! rtph264depay ! h264parse !
avdec_h264 ! queue ! xvimagesink

Receiver pipeline that generates corrupt MPEG2TS files:

gst-launch-1.0 -eeevv  udpsrc port=5004 caps="application/x-rtp\,\
media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\
encoding-name\=\(string\)H264\,\ packetization-mode\=\(string\)1\,\
profile-level-id\=\(string\)64001f\,\ payload\=\(int\)96\,\
ssrc\=\(uint\)3675893665\,\ timestamp-offset\=\(uint\)1120179275\,\
seqnum-offset\=\(uint\)19\,\ a-framerate\=\(string\)25" ! rtpjitterbuffer !
rtph264depay ! h264parse ! identity sync=true ! queue ! splitmuxsink
muxer=mpegtsmux location=segment_%05d.ts max-size-time=3000001000

We can "play" the first segment, but ffmpeg reports corrupt timestamps. Every
subsequent segment is unplayable.

On a side note (but perhaps that should go in a separate bug report?), we
cannot pass the sprop-parameter-sets on udpsrc. When we add the following
sprop-parameter-sets:
sprop-parameter-sets\=\(string\)\"Z2QAH6yyAKALdgIgAAADACAAAAZR4wZJ\\\,aOvMsiw\\\=\"\,\
in the caps above, gst-launch throws an error about incorrect caps.

e.g 

gst-launch-1.0 -eeevv  udpsrc port=5004 caps="application/x-rtp\,\
media\=\(string\)video\,\ clock-rate\=\(int\)90000\,\
encoding-name\=\(string\)H264\,\ packetization-mode\=\(string\)1\,\
profile-level-id\=\(string\)64001f\,\
sprop-parameter-sets\=\(string\)\"Z2QAH6yyAKALdgIgAAADACAAAAZR4wZJ\\\,aOvMsiw\\\=\"\,\
payload\=\(int\)96\,\ ssrc\=\(uint\)3675893665\,\
timestamp-offset\=\(uint\)1120179275\,\ seqnum-offset\=\(uint\)19\,\
a-framerate\=\(string\)25" ! rtpjitterbuffer ! rtph264depay ! h264parse !
identity sync=true ! queue ! splitmuxsink muxer=mpegtsmux
location=segment_%05d.ts max-size-time=3000001000

Throws this error message: WARNING: erroneous pipeline: could not set property
"caps" in element "udpsrc0" to "application/x-rtp,\ media=(string)video,\
clock-rate=(int)90000,\ encoding-name=(string)H264,\
packetization-mode=(string)1,\ profile-level-id=(string)64001f,\
sprop-parameter-sets=(string)"Z2QAH6yyAKALdgIgAAADACAAAAZR4wZJ\\,aOvMsiw\\=",\
payload=(int)96,\ ssrc=(uint)3675893665,\ timestamp-offset=(uint)1120179275,\
seqnum-offset=(uint)19,\ a-framerate=(string)25"

Not sure whether this problem is related to
https://bugzilla.gnome.org/show_bug.cgi?id=752999 (already marked as RESOLVED).


I am on 1.7.0.1, but we have observed the same behavior on other versions
(1.6.x) as well. I am also willing to test against git HEAD if that helps.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list