I have a SONY SNCRZ25 IP Camera which i am trying to get working with VLC. The camera comes with an OCX for viewing which works fine, however i need to get access to the MPEG-4 stream for recording purposes. The camera supports both MJPEG and MPEG-4, and supports this over HTTP, RTP(UDP) Unicast and Multicast.
I can open the MJPEG stream in VLC over HTTP, however i am having big problems with getting the MPEG-4 bitstream working. I have tried it over HTTP and get the following results:
It seems to be finding the stream ok once i enter the authentification info for the camera, but then sits there waiting for the sequence to start. The documentation on the camera says that once the HTTP command has been issued the camera "sends the MPEG4 raw data as its response", is this how vlc expects it?main debug: adding playlist item `http://10.1.1.4/mpeg4' ( http://10.1.1.4/mpeg4 )
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 4208 (input) created at priority 1 (input/input.c:261)
main debug: `http://10.1.1.4/mpeg4' gives access `http' demux `' path `10.1.1.4/mpeg4'
main debug: creating demux: access='http' demux='' path='10.1.1.4/mpeg4'
main debug: looking for access_demux module: 0 candidates
main warning: no access_demux module matched "http"
main debug: creating access 'http' path='10.1.1.4/mpeg4'
main debug: looking for access2 module: 7 candidates
access_http debug: http: server='10.1.1.4' port=80 file='/mpeg4
main debug: net: connecting to 10.1.1.4 port 80
main debug: connection in progress
access_http debug: protocol 'HTTP' answer code 401
access_http debug: Server: Boa/0.94.14rc18
access_http debug: Content-Type: text/html; charset=ISO-8859-1
access_http debug: authentication failed
access_http debug: retrying with user=admin, pwd=admin
main debug: net: connecting to 10.1.1.4 port 80
main debug: connection in progress
access_http debug: protocol 'HTTP' answer code 200
access_http debug: Content-Type: video/mpeg
access_http debug: Pragma: no-cache
main debug: using access2 module "access_http"
main debug: pre-buffering...
main debug: received first data for our buffer
main debug: pre-buffering done 43525 bytes in 0s - 108 kbytes/s
main debug: creating demux: access='http' demux='' path='10.1.1.4/mpeg4'
main debug: looking for demux2 module: 44 candidates
main debug: looking for packetizer module: 17 candidates
main debug: using packetizer module "packetizer_mpegvideo"
main debug: selecting program id=0
main debug: using demux2 module "mpgv"
main debug: looking for a subtitle file in C:\Program Files\VLC\
main debug: looking for decoder module: 27 candidates
main debug: using decoder module "libmpeg2"
main debug: thread 4896 (decoder) created at priority 0 (input/decoder.c:159)
main debug: `http://10.1.1.4/mpeg4' successfully opened
packetizer_mpegvideo debug: waiting for sequence start
packetizer_mpegvideo debug: waiting for sequence start
packetizer_mpegvideo debug: waiting for sequence start
packetizer_mpegvideo debug: waiting for sequence start
If i try and use RTP Unicast, by starting VLC and opening a UDP/RTP stream on port 30000, then go to a browser and instruct the camera to do a MPEG-4 bitstream to port 30000 (using url: http://10.1.1.4/mpeg4?UdpMode=unicast&UdpPort=30000) i get the following:
No idea what the problem is here, its clearly going to the correct port as vlc detects the stream once i have entered the url in the browser but can't seem to process it.main debug: adding playlist item `rtp://@:30000' ( rtp://@:30000 )
main debug: creating new input thread
main debug: waiting for thread completion
main debug: thread 4944 (input) created at priority 1 (input/input.c:261)
main debug: `rtp://@:30000' gives access `rtp' demux `' path `@:30000'
main debug: creating demux: access='rtp' demux='' path='@:30000'
main debug: looking for access_demux module: 0 candidates
main warning: no access_demux module matched "rtp"
main debug: creating access 'rtp' path='@:30000'
main debug: looking for access2 module: 6 candidates
access_udp debug: opening server=:0 local=:30000
main debug: net: connecting to '[]:0@[]:30000'
main debug: looking for network module: 1 candidate
ipv6 warning: cannot create socket (Winsock error 10047)
main debug: using network module "ipv6"
main debug: removing module "ipv6"
main debug: looking for network module: 1 candidate
ipv4 debug: resolving :30000...
main debug: using network module "ipv4"
main debug: removing module "ipv4"
main debug: using access2 module "access_udp"
main debug: pre buffering
access_udp debug: no RTP header detected
main debug: creating demux: access='rtp' demux='' path='@:30000'
main debug: looking for demux2 module: 44 candidates
ffmpeg debug: couldn't guess format
ps warning: this does not look like an MPEG PS stream, continuing anyway
main debug: using demux2 module "ps"
main debug: looking for a subtitle file in C:\Program Files\VLC\
access_udp warning: unimplemented query in control
main debug: `rtp://@:30000' successfully opened
ps warning: garbage at input, trying to resync...
Having trawled round the net and these forums etc i have discovered info about how MPEG-4 bitstreams do not contain decode info and often SDP files are required, is that what my problem is in this case? VLC detects the stream but can't decode (or in the case of over HTTP doesn't get more data for some reason). I've read a few RFCs (3016, 3640 etc) and it seems it can be sent in-band rather than out of band (in an SDP file or the like) but the info i have on the cameras doesn't say if it does either so i'm stumped as what my next move should be. I could try and write my own sdp file but without knowing much about the bitstream this camera is sending that would be difficult and possibly big waste of time given i don't even know if this is the problem and given how complicated SDP files look
Any ideas or suggestions on how i can figure out what is going on?
Thanks alot & kind regards.
Jason