Hi.
Something must be wrong in either the gateway end or the playing end. Well actually, maybe not, but something is missing though.
For the MPEG-4 part example I set things up in the gateway like this.
# vlc -vvv rtsp://192.168.1.1/test1.sdp --sout '#std{access=http,mux=ts,dst=:8100}' 2>&1 |tee log
In the other end, I just try to play
http://192.168.1.2:8100, but the player says it awaits the VOL header.
Hmm, the VOL header is missing from the stream source to keep bandwidth down and because it is part of the description found in the test1.sdp and the player can play the rtsp stream directly. So in principle no need to include the VOL header in the rtsp based rtp stream.
Is there a way to tell the TS-muxer to add the VOL header to the stream at regular intervals ?
I assume the VOL header can not be added to the initial http header reply in any standardized way ....
(one more good argument to use RTSP
Kind regards
Peter
PS. Here is the output from the vlc rtsp2http gateway.
VLC media player 0.8.6e Janus
[00000001] main private debug: checking builtin modules
[00000001] main private debug: checking plugin modules
[00000001] main private debug: loading plugins cache file /root/.vlc/cache/plugins-04041e.dat
[00000001] main private debug: recursively browsing `modules'
[00000001] main private debug: recursively browsing `/usr/local/depot/2.6.20.6-i686/vlc-0.8.6e/lib/vlc'
[00000001] main private debug: recursively browsing `plugins'
[00000001] main private debug: module bank initialized, found 211 modules
[00000001] main private warning: Unable to get HAL device properties
[00000001] main private debug: opening config file /root/.vlc/vlcrc
[00000001] main private debug: CPU has capabilities 486 586 MMX MMXEXT SSE SSE2 FPU
[00000001] main private debug: looking for memcpy module: 3 candidates
[00000001] main private debug: using memcpy module "memcpymmxext"
[00000524] main playlist debug: waiting for thread completion
[00000524] main playlist debug: thread 3080936336 (playlist) created at priority 0 (playlist/playlist.c:184)
[00000525] main private debug: waiting for thread completion
[00000525] main private debug: thread 3072547728 (preparser) created at priority 0 (playlist/playlist.c:210)
[00000526] main interface debug: looking for interface module: 1 candidate
[00000526] main interface debug: using interface module "hotkeys"
[00000526] main interface debug: thread 3064159120 (interface) created at priority 0 (interface/interface.c:231)
[00000528] main interface debug: looking for interface module: 1 candidate
[00000528] main interface debug: using interface module "screensaver"
[00000528] main interface debug: thread 3055770512 (interface) created at priority 0 (interface/interface.c:231)
[00000524] main playlist debug: adding playlist item `rtsp://
www.optimalstream.net/sdp/bbcw.sdp' ( rtsp://192.168.1.1/test1.sdp )
[00000530] main interface debug: looking for interface module: 3 candidates
[00000530] main interface debug: using interface module "wxwidgets"
[00000530] main interface debug: thread 3033111440 (manager) created at priority 0 (interface/interface.c:216)
[00000530] wxwidgets interface debug: Using last windows config '(-1,0,0,1440,900)(0,657,237,389,82)(2,605,367,410,560)(6,0,0,-1,150)'
[00000530] wxwidgets interface debug: id=0 p=(657,237) s=(389,82)
[00000530] wxwidgets interface debug: id=2 p=(605,367) s=(410,560)
[00000530] wxwidgets interface debug: id=6 p=(0,0) s=(-1,150)
[00000524] main playlist debug: nothing requested, starting
[00000524] main playlist debug: creating new input thread
[00000533] main input debug: waiting for thread completion
[00000533] main input debug: creating statistics handler
[00000535] main stream output debug: stream=`std'
[00000536] main private debug: looking for sout stream module: 1 candidate
[00000536] main private debug: set sout option: sout-standard-access to http
[00000536] main private debug: set sout option: sout-standard-mux to ts
[00000536] main private debug: set sout option: sout-standard-dst to :8100
[00000536] stream_out_standard private debug: creating `http/ts://:8100'
[00000536] stream_out_standard private debug: using `http/ts://:8100'
[00000538] main private debug: looking for sout access module: 1 candidate
[00000538] main private: creating httpd
[00000538] main private debug: net: listening to port 8100
[00000533] main input debug: thread 3011750800 (input) created at priority 0 (input/input.c:265)
[00000538] main private debug: socket error: Address family not supported by protocol
[00000541] main http server debug: thread 3003333520 (httpd host thread) created at priority 0 (network/httpd.c:1078)
[00000538] main private debug: using sout access module "access_output_http"
[00000536] stream_out_standard private debug: access opened
[00000542] main private debug: looking for sout mux module: 1 candidate
[00000542] mux_ts private debug: shaping=200000 pcr=70000 dts_delay=400000
[00000542] main private debug: using sout mux module "mux_ts"
[00000535] main stream output debug: muxer support adding stream at any time
[00000536] stream_out_standard private debug: mux opened
[00000536] main private debug: using sout stream module "stream_out_standard"
[00000533] main input debug: `rtsp://192.168.1.1/test1.sdp' gives access `rtsp' demux `' path `192.168.1.1/test1.sdp'
[00000533] main input debug: creating demux: access='rtsp' demux='' path='192.168.1.1/test1.sdp'
[00000543] main demuxer debug: looking for access_demux module: 1 candidate
Sending request: OPTIONS rtsp://192.168.1.1/test1.sdp RTSP/1.0^M
CSeq: 1^M
User-Agent: VLC media player (LIVE555 Streaming Media v2008.02.08)^M
^M
Received OPTIONS response: RTSP/1.0 200 OK^M
Server: DSS/5.0.1.1 (Build/464.1.1; Platform/Linux; Release/5; )^M
Cseq: 1^M
Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, ANNOUNCE, SET_PARAMETER, RECORD^M
^M
Sending request: DESCRIBE rtsp://192.168.1.1/test1.sdp RTSP/1.0^M
CSeq: 2^M
Accept: application/sdp^M
User-Agent: VLC media player (LIVE555 Streaming Media v2008.02.08)^M
^M
Received DESCRIBE response: RTSP/1.0 200 OK^M
Server: DSS/5.0.1.1 (Build/464.1.1; Platform/Linux; Release/5; )^M
Cseq: 2^M
Cache-Control: no-cache^M
Content-length: 1219^M
Date: Wed, 12 Mar 2008 14:51:12 GMT^M
Expires: Wed, 12 Mar 2008 14:51:12 GMT^M
Content-Type: application/sdp^M
x-Accept-Retransmit: our-retransmit^M
x-Accept-Dynamic-Rate: 1^M
Content-Base: rtsp://192.168.1.1/test1.sdp/^M
^M
Need to read 1219 extra bytes
Read 1219 extra bytes: v=0^M
o=- 1140059519094059 1140059519094059 IN IP4 192.168.2.1^M
s=bbcw.sdp^M
e=NONE^M
c=IN IP4 0.0.0.0^M
t=0 0^M
a=mpeg4-iod: "data:application/mpeg4-iod;base64,AoCAgy4AT///D/T/A4CAgHkAyUBGZGF0YTphcHBsaWNhdGlvbi9tcGVnNC1iaWZzLWF1O2Jhc2U2NCx3QkFTZ1RBcUJXMG1FRUg4QUFBQi9BQU
FCRUtDS0NuNASAgIAVAg0AABgAAADAAAAAwAWAgIADAABgBoCAgBAARAAAAAAAAAAAAAAAAAADA4CAgiQAZUD0ZGF0YTphcHBsaWNhdGlvbi9tcGVnNC1vZC1hdTtiYXNlNjQsQVlDQWdSY0JnSUNBT0FLZkE0
Q0FnREVBQ2dBRWdJQ0FGRUFWQUNNb0FBRVpRQUFCR1VBRmdJQ0FBaEdRQm9DQWdCQUFSQUFBQUFBQUFBQUFBQUFBQUFBREFZQ0FnRlVGSHdPQWdJQk9BQlFBQklDQWdERWdFUUxvb1FBWFJRZ0FGMFVJQllDQW
dCOEFBQUd3OUFBQUFiVUpBQUFCQUFBQUFTQUF2Q0FXeEFCbkREd1JJRkdQQm9DQWdCQUFSQUFBQUFBQUFBQUFBQUFBQUFBRASAgIASAQUAAJwAAATgAAAE4AWAgIAABoCAgBAARAAAAAAAAAAAAAAAAAAD"^M
a=isma-compliance:1,1.0,1^M
a=control:*^M
m=video 0 RTP/AVP 96^M
b=AS:1525^M
a=rtpmap:96 MP4V-ES/90000^M
a=fmtp:96 profile-level-id=244; config=000001b0f4000001b509000001000000012000bc2016c400670c3c1120518f;^M
a=mpeg4-esid:20^M
a=control:trackID=1^M
m=audio 0 RTP/AVP 97^M
b=AS:72^M
a=rtpmap:97 mpeg4-generic/48000^M
a=fmtp:97 streamtype=5; profile-level-id=15; mode=AAC-hbr; config=1190; SizeLength=13; IndexLength=3; IndexDeltaLength=3; Profile=1;^M
a=mpeg4-esid:10^M
a=control:trackID=2^M
[00000543] live555 demuxer debug: RTP subsession 'video/MP4V-ES'
Sending request: SETUP rtsp://192.168.1.1/test1.sdp/trackID=1 RTSP/1.0^M
CSeq: 3^M
Transport: RTP/AVP;unicast;client_port=32852-32853^M
User-Agent: VLC media player (LIVE555 Streaming Media v2008.02.08)^M
^M
Received SETUP response: RTSP/1.0 200 OK^M
Server: DSS/5.0.1.1 (Build/464.1.1; Platform/Linux; Release/5; )^M
Cseq: 3^M
Cache-Control: no-cache^M
Session: 4331850899295520966^M
Date: Wed, 12 Mar 2008 14:52:11 GMT^M
Expires: Wed, 12 Mar 2008 14:52:11 GMT^M
Transport: RTP/AVP;unicast;client_port=32852-32853;source=192.168.1.1;server_port=6972-6973;ssrc=43EA3694^M
^M
[00000543] live555 demuxer debug: RTP subsession 'audio/MPEG4-GENERIC'
Sending request: SETUP rtsp://192.168.1.1/test1.sdp/trackID=2 RTSP/1.0^M
CSeq: 4^M
Transport: RTP/AVP;unicast;client_port=32854-32855^M
Session: 4331850899295520966^M
User-Agent: VLC media player (LIVE555 Streaming Media v2008.02.08)^M
^M
Received SETUP response: RTSP/1.0 200 OK^M
Server: DSS/5.0.1.1 (Build/464.1.1; Platform/Linux; Release/5; )^M
Cseq: 4^M
Session: 4331850899295520966^M
Cache-Control: no-cache^M
Date: Wed, 12 Mar 2008 14:51:12 GMT^M
Expires: Wed, 12 Mar 2008 14:51:12 GMT^M
Transport: RTP/AVP;unicast;client_port=32854-32855;source=192.168.1.1;server_port=6970-6971;ssrc=1B8CD501^M
^M
Sending request: PLAY rtsp://192.168.1.1/test1.sdp/ RTSP/1.0^M
CSeq: 5^M
Session: 4331850899295520966^M
Range: npt=0.000-^M
User-Agent: VLC media player (LIVE555 Streaming Media v2008.02.08)^M
^M
Received PLAY response: RTSP/1.0 200 OK^M
Server: DSS/5.0.1.1 (Build/464.1.1; Platform/Linux; Release/5; )^M
Cseq: 5^M
Session: 4331850899295520966^M
RTP-Info: url=trackID=1,url=trackID=2^M
^M
[00000533] main input debug: selecting program id=0
[00000543] main demuxer debug: using access_demux module "live555"
[00000544] main packetizer debug: looking for packetizer module: 16 candidates
[00000544] packetizer_mpeg4video packetizer debug: opening with vol size: 32
[00000544] main packetizer debug: using packetizer module "packetizer_mpeg4video"
[00000533] main input debug: stream out mode -> no decoder thread
[00000533] main input debug: audio is disabled, not selecting ES 0x1
[00000533] main input debug: starting in sync mode
[00000533] main input debug: `rtsp://192.168.1.1/test1.sdp' successfully opened
[00000535] main stream output debug: adding a new input
[00000542] main private debug: adding a new input
[00000542] mux_ts private debug: adding input codec=mp4v pid=68
[00000542] mux_ts private debug: new PCR PID is 68
[00000542] main private warning: late buffer for mux input (1205333462170075)
[00000542] mux_ts private warning: packet with too strange dts (dts=1205333463936789,old=560000,pcr=560000)
[00000543] live555 demuxer debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
[00000542] mux_ts private warning: packet with too strange dts (dts=1205336464904211,old=1205333466776789,pcr=1205333466776789)
[00000541] main http server debug: Connection from 130.226.208.170
[00000543] live555 demuxer debug: tk->rtpSource->hasBeenSynchronizedUsingRTCP()
[00000542] mux_ts private warning: packet with too strange dts (dts=1205333472966086,old=1205336470729259,pcr=1205336470729259)
Player debug output
main debug: CPU has capabilities 486 586 MMX MMXEXT SSE SSE2 FPU
main debug: looking for memcpy module: 3 candidates
main debug: using memcpy module "memcpymmxext"
main debug: waiting for thread completion
main debug: thread 3744 (playlist) created at priority 0 (playlist/playlist.c:184)
main debug: waiting for thread completion
main debug: thread 3760 (preparser) created at priority 0 (playlist/playlist.c:210)
main debug: looking for interface module: 1 candidate
main debug: using interface module "hotkeys"
main debug: thread 3784 (interface) created at priority 0 (interface/interface.c:231)
main debug: adding playlist item `C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u' ( C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u )
main debug: looking for interface module: 3 candidates
main debug: using interface module "wxwidgets"
main debug: thread 3816 (manager) created at priority 0 (interface/interface.c:216)
wxwidgets debug: Using last windows config '(-1,0,0,1440,900)(0,174,69,355,105)(2,132,174,981,587)(6,0,0,-1,150)'
wxwidgets debug: id=0 p=(174,69) s=(355,105)
wxwidgets debug: id=2 p=(132,174) s=(981,587)
wxwidgets debug: id=6 p=(0,0) s=(-1,150)
main debug: nothing requested, starting
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 3952 (input) created at priority 1 (input/input.c:265)
main debug: creating statistics handler
main debug: drive letter C: found in source
main debug: `C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u' gives access `' demux `' path `C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u'
main debug: creating demux: access='' demux='' path='C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u'
main debug: looking for access_demux module: 1 candidate
main debug: creating access '' path='C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u'
main debug: looking for access2 module: 5 candidates
vcd debug: trying .cue file: C:\Documents and Settings\Administrator\Desktop\HTTP Streams.cue
vcd debug: could not find .cue file
access_file debug: opening file `C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u'
main debug: using access2 module "access_file"
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: creating demux: access='' demux='' path='C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u'
main debug: looking for demux2 module: 45 candidates
playlist debug: found valid M3U playlist file
main debug: using demux2 module "playlist"
main debug: looking for a subtitle file in C:\Documents and Settings\Administrator\Desktop\
main debug: `C:\Documents and Settings\Administrator\Desktop\HTTP Streams.m3u' successfully opened
playlist debug: starting playlist playback
main debug: adding playlist item `Test 8100 : Streamserver 0' (
http://83.137.33.122:8100 )
main debug: EOF reached
main debug: closing input
main debug: removing module "playlist"
main debug: removing module "access_file"
main debug: thread times: real 0m0.171875s, kernel 0m0.015625s, user 0m0.000000s
main debug: thread 3952 joined (input/input.c:412)
main debug: creating new input thread
main debug: waiting for thread completion
main debug: `
http://192.168.1.2:8100' gives access `http' demux `' path `192.168.1.2:8100'
main debug: creating demux: access='http' demux='' path='192.168.1.2:8100'
main debug: looking for access_demux module: 0 candidates
main debug: thread 3988 (input) created at priority 1 (input/input.c:265)
main warning: no access_demux module matched "http"
main debug: creating access 'http' path='192.168.1.2:8100'
main debug: looking for access2 module: 7 candidates
access_http debug: http: server='192.168.1.2' port=8100 file='(null)
main debug: net: connecting to 192.168.1.2 port 8100
main debug: connection in progress
access_http debug: protocol 'HTTP' answer code 200
access_http debug: Content-Type: application/octet-stream
main debug: using access2 module "access_http"
main debug: pre-buffering...
main error: cannot pre fill buffer
main warning: cannot create a stream_t from access
main debug: removing module "access_http"
main debug: thread times: real 0m10.281250s, kernel 0m0.000000s, user 0m0.000000s
main debug: thread 3988 joined (input/input.c:412)
main: nothing to play
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 3944 (input) created at priority 1 (input/input.c:265)
main debug: `
http://192.168.1.2:8100' gives access `http' demux `' path `192.168.1.2:8100'
main debug: creating demux: access='http' demux='' path='192.168.1.2:8100'
main debug: looking for access_demux module: 0 candidates
main warning: no access_demux module matched "http"
main debug: creating access 'http' path='192.168.1.2:8100'
main debug: looking for access2 module: 7 candidates
access_http debug: http: server='192.168.1.2' port=8100 file='(null)
main debug: net: connecting to 192.168.1.2 port 8100
main debug: connection in progress
access_http debug: protocol 'HTTP' answer code 200
access_http debug: Content-Type: application/octet-stream
main debug: using access2 module "access_http"
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: pre-buffering done 43340 bytes in 0s - 91 kbytes/s
main debug: creating demux: access='http' demux='' path='192.168.1.2:8100'
main debug: looking for demux2 module: 45 candidates
main debug: using demux2 module "ts"
main debug: looking for a subtitle file in C:\Program Files\VideoLAN\VLC\
ts debug: DEMUX_SET_GROUP 0 00000000
main debug: `
http://192.168.1.2:8100' successfully opened
ts debug: pid[68] unknown
ts debug: PATCallBack called
ts debug: new PAT ts_id=52993 version=23 current_next=1
ts debug: * number=1 pid=66
ts debug: PMTCallBack called
ts debug: new PMT program number=1 version=30 pid_pcr=68
ts debug: * es pid=68 type=16 fcc=mp4v
main debug: selecting program id=1
main debug: looking for decoder module: 28 candidates
ffmpeg debug: libavcodec initialized (interface 3349504 )
ffmpeg debug: postprocessing disabled
ffmpeg debug: using direct rendering
ffmpeg debug: ffmpeg codec (MPEG-4 Video) started
main debug: using decoder module "ffmpeg"
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_mpeg4video"
main debug: thread 4208 (decoder) created at priority 0 (input/decoder.c:159)
packetizer_mpeg4video warning: waiting for VOL
packetizer_mpeg4video warning: waiting for VOL
packetizer_mpeg4video warning: waiting for VOL
packetizer_mpeg4video warning: waiting for VOL
packetizer_mpeg4video warning: waiting for VOL
packetizer_mpeg4video warning: waiting for VOL