Help needed for decoding of a H264 stream...

Guetcho Guetchev getcho.getchev at gmail.com
Wed Jan 9 16:19:31 PST 2013


Hello guys.
I constructed a transmission pipeline. Although I can play it with Quicktime (Mac OS, Windows) and Totem (Ubuntu, Debian) I am unable to decode that stream with the following pipelines:

/usr/local/bin/gst-launch-1.0 rtspsrc location=rtsp://bbs.darktech.org:1935/live/iphone.sdp ! capsfilter name=c1 caps=application/x-rtp,media=video,payload=97,clock-rate=90000,encoding-name=H264 ! rtph264depay ! h264parse ! capsfilter name=c2 caps=video/x-h264,alignment=au ! avdec_h264 ! capsfilter name=c3 caps=video/x-raw,format=I420 ! avenc_tiff !  multifilesink location=./tiff_file_%05d

/usr/local/bin/gst-launch-1.0 rtspsrc location=rtsp://bbs.darktech.org:1935/live/iphone.sdp ! capsfilter name=c1 caps=application/x-rtp,media=video,payload=97,clock-rate=90000,encoding-name=H264 ! rtph264depay ! avdec_h264 ! avenc_tiff ! multifilesink location=./tiff_file_%05d

At both of the pipelines I observe the following results:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:02.483934362  2917 0xb4b02580 ERROR                  libav :0:: get_buffer() failed (-1 2 (nil))
0:00:02.484005089  2917 0xb4b02580 ERROR                  libav :0:: decode_slice_header error
0:00:02.484015246  2917 0xb4b02580 ERROR                  libav :0:: mmco: unref short failure
0:00:04.647398217  2917 0xb4b02580 ERROR                  libav :0:: get_buffer() failed (-1 2 (nil))
0:00:04.647434178  2917 0xb4b02580 ERROR                  libav :0:: decode_slice_header error
0:00:04.647443756  2917 0xb4b02580 ERROR                  libav :0:: mmco: unref short failure
0:00:07.091243587  2917 0xb4b02580 ERROR                  libav :0:: Invalid level prefix
0:00:07.091389668  2917 0xb4b02580 ERROR                  libav :0:: error while decoding MB 18 37

And no valid tiff files are produced.

The same behaviour is seen even if I replace all the elements after avdec_h264 (excluding it) with fakesink.


Please, can anyone point me what I am doing wrong?

REMARKS:

The used version of gstreamer is 1.0.5
To start the stream, use the executable built on the code stored here: https://github.com/ggetchev/gst_test

The actual C-file that runs the transmission pipeline is named gsttest2.c

Just execute make and run the executable in that manner:

./gsttest  <file> --no-reception
Where <file> is the un-bzip2-ed file 1.movie.bz2 from the git repository mentioned above. 

Regards,
Getcho





More information about the gstreamer-devel mailing list