[gst-devel] RTSP Server Examples

Sean McNamara smcnam at gmail.com
Thu May 7 16:34:19 CEST 2009


Hello,

 I am using latest git gst-core, gst-p-base, gst-p-good, gst-p-bad,
gst-p-ugly, gst-rtsp-server. I am using libtheora 1.0 and libogg 1.1.
I created a file test.ogg with this pipeline:

videotestsrc blocksize=4096 num-buffers=200 ! ffmpegcolorspace !
theoraenc ! oggmux ! filesink location=~/test.ogg

This pipeline works fine:

playbin2 uri=file://${HOME}/test.ogg

However, if I start the gst-rtsp-server example "test-ogg" and point
it to the same file, this pipeline causes a critical assertion in the
RTSP server when trying to connect using the following pipeline:

playbin2 uri=rtsp://localhost:8554/test

The full output on the server side:

$ ./test-ogg.bin ~/test.ogg
** Message: listening on port 8554
** Message: added new client 0x9afce60 ip 127.0.0.1:4572
** Message: attaching to context 0x9afdbe8
RTSP request message 0x9c1154c
 request line:
   method: 'OPTIONS'
   uri:    'rtsp://localhost:8554/test'
   version: '1.0'
 headers:
   key: 'CSeq', value: '1'
   key: 'User-Agent', value: 'RealMedia Player Version 6.0.9.1235
(linux-2.0-libc6-i386-gcc2.95)'
   key: 'ClientChallenge', value: '9e26d33f2984236010ef6253fb1887f7'
   key: 'CompanyID', value: 'KnKV4M4I/B2FjJ1TToLycw=='
   key: 'GUID', value: '00000000-0000-0000-0000-000000000000'
   key: 'RegionData', value: '0'
   key: 'PlayerStarttime', value: '[28/03/2003:22:50:23 00:00]'
   key: 'ClientID', value: 'Linux_2.4_6.0.9.1235_play32_RN01_EN_586'
   key: 'Date', value: 'Thu, 07 May 2009 14:15:07 GMT'
 body:
** Message: client 0x9afce60: received a request
RTSP response message 0xbff5a224
 status line:
   code:   '200'
   reason: 'OK'
   version: '1.0'
 headers:
   key: 'CSeq', value: '1'
   key: 'Public', value: 'OPTIONS, DESCRIBE, PAUSE, PLAY, SETUP, TEARDOWN'
   key: 'Server', value: 'GStreamer RTSP server'
 body: length 0
** Message: client 0x9afce60: sent a message with cseq 1
RTSP request message 0x9c1154c
 request line:
   method: 'DESCRIBE'
   uri:    'rtsp://localhost:8554/test'
   version: '1.0'
 headers:
   key: 'CSeq', value: '2'
   key: 'Accept', value: 'application/sdp'
   key: 'Date', value: 'Thu, 07 May 2009 14:15:07 GMT'
 body:
** Message: client 0x9afce60: received a request
** Message: found media 0x9bfbd20 for url abspath /test
** Message: enter mainloop
** Message: constructed media 0x9baa538 for url /test
** Message: preparing media 0x9baa538
** (lt-test-ogg:31866): CRITICAL **: make_granulepos: assertion `frame
>= keyframe' failed
** Message: stream 0x9c44470 received caps application/x-rtp,
media=(string)video, clock-rate=(int)90000,
encoding-name=(string)THEORA, sampling=(string)YCbCr-4:2:0,
width=(string)320, height=(string)240,
configuration=(string)"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\=",
delivery-method=(string)inline, ssrc=(guint)1814388793,
payload=(int)96, clock-base=(guint)3352273194,
seqnum-base=(guint)39273
** Message: stream 0x9c44470 received caps application/x-rtp,
media=(string)video, clock-rate=(int)90000,
encoding-name=(string)THEORA, sampling=(string)YCbCr-4:2:0,
width=(string)320, height=(string)240,
configuration=(string)"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\=",
delivery-method=(string)inline, ssrc=(guint)1814388793,
payload=(int)96, clock-base=(guint)3352273194,
seqnum-base=(guint)39273

The full output on the client side:

$ gst-launch-0.10 playbin2 uri=rtsp://localhost:8554/test
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source:
Could not read from resource.
Additional debug info:
gstrtspsrc.c(3640): gst_rtspsrc_try_send ():
/GstPlayBin2:playbin20/GstURIDecodeBin:uridecodebin0/GstRTSPSrc:source:
Could not receive message. (Timeout while waiting for server response)
Setting pipeline to NULL ...
Freeing pipeline ...



The critical assertion is this:

** (lt-test-ogg:6966): CRITICAL **: make_granulepos: assertion `frame
>= keyframe' failed

The offending line of code is
gst-plugins-base/ext/theora/theoraparse.c line 420, in
make_granulepos():

g_return_val_if_fail (frame >= keyframe, -1);

The backtrace when breaking on this line:

Breakpoint 1, theora_parse_push_buffer (parse=0x9719000,
buf=0x9787ae0, keyframe=1, frame=0)
    at theoraparse.c:420
420	  g_return_val_if_fail (frame >= keyframe, -1);
(gdb) bt
#0  theora_parse_push_buffer (parse=0x9719000, buf=0x9787ae0,
keyframe=1, frame=0)
    at theoraparse.c:420
#1  0xb78f2da5 in theora_parse_chain (pad=0x9655b18, buffer=0x9787ae0)
at theoraparse.c:620
#2  0xb7f328f5 in gst_pad_chain_unchecked (pad=0x9655b18,
buffer=0x9787ae0) at gstpad.c:3977
#3  0xb7f33d0a in gst_pad_push (pad=0x9655a58, buffer=0x9787ae0) at
gstpad.c:4144
#4  0xb7897562 in gst_queue_loop (pad=0x9655a58) at gstqueue.c:1042
#5  0xb7f571d3 in gst_task_func (task=0x975a190, tclass=0x95e6228) at
gsttask.c:172
#6  0xb7cfee26 in ?? () from /usr/lib/libglib-2.0.so.0
#7  0xb7cfd7bf in ?? () from /usr/lib/libglib-2.0.so.0
#8  0xb7c3b4ff in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#9  0xb7bb649e in clone () from /lib/tls/i686/cmov/libc.so.6


The interesting thing is: if I comment out lines 417 and 418, then
(frame >= keyframe) is TRUE, and the critical doesn't trigger.
Unfortunately, after "fixing" this, I still don't get any output --
and I get no further error-ish stuff, only debug info.

The test-mp4 and test-readme examples don't work either. I don't know
how to operate this code, as it seems determined to do nothing
regardless of my efforts. I have also tried VLC as an RTSP client to
see if it's the client-side, but that hangs just like the gstreamer
client. I tried using VLC as an RTSP server, and both gstreamer and
VLC can connect to it and stream the very same Ogg/Theora test file.
Maybe I am making a user error - would anyone care to enlighten me?

Thanks,

Sean




More information about the gstreamer-devel mailing list