Error reading an IP camera MJPEG stream

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Error reading an IP camera MJPEG stream

Icarus Alive
Hi,

Got a rather tacky little east-asian IP camera (apparently a Foscam
knock-off), and trying to write a little DIY DVR (of sorts) for it on
Linux (Debian 'Sid'). Here's the command I use:

icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink

and here's what I get.

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
framerate=(fraction)0/1
ERROR: from element
/GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
error.
Additional debug info:
gstbasesrc.c(2582): gst_base_src_loop ():
/GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
caps = NULL
Freeing pipeline ...

The username/password for the challenged domain is correct, as I can
test it with exact same URL in Firefox, and similarly in vlc. Could
someone suggest what I should be checking and what might be wrong ?

On reading around, I found 2 different syntaxes on reading MJPEG
streams off IP cams, and not sure which one is to be used, and what's
the difference --

Approach-1: (writes to file)
gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
do-timestamp=true ! multipartdemux
   ! image/jpeg,width=640,height=480 ! matroskamux
   ! filesink location=mjpeg.mkv

Approach-2: (displays on local display device)
gst-launch souphttpsrc
location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
jpegdec ! glimagesink force-aspect-ratio=true

In first approach, there's a step of demuxing multipart encoded JPEGs,
and then possibly specifying image decode with certain attributes. In
second approach I don't see any multipart encode handling, and direct
invocation of jpeg-decoder.

In my setup, I don't even seem to have a glimagesink though !


~ Icarus
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error reading an IP camera MJPEG stream

Mailing List SVR
Il 01/09/2011 13:32, Icarus Alive ha scritto:
> Hi,
>
> Got a rather tacky little east-asian IP camera (apparently a Foscam
> knock-off), and trying to write a little DIY DVR (of sorts) for it on
> Linux (Debian 'Sid'). Here's the command I use:
>
> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
> do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink

try

gst-launch souphttpsrc location=... ! jpegparse ! jpegdec ! xvimagesink
sync=false


Nicola

>
> and here's what I get.
>
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
> video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
> framerate=(fraction)0/1
> ERROR: from element
> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
> error.
> Additional debug info:
> gstbasesrc.c(2582): gst_base_src_loop ():
> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
> streaming task paused, reason not-negotiated (-4)
> ERROR: pipeline doesn't want to preroll.
> Setting pipeline to NULL ...
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
> /GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
> caps = NULL
> Freeing pipeline ...
>
> The username/password for the challenged domain is correct, as I can
> test it with exact same URL in Firefox, and similarly in vlc. Could
> someone suggest what I should be checking and what might be wrong ?
>
> On reading around, I found 2 different syntaxes on reading MJPEG
> streams off IP cams, and not sure which one is to be used, and what's
> the difference --
>
> Approach-1: (writes to file)
> gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
> do-timestamp=true ! multipartdemux
>     ! image/jpeg,width=640,height=480 ! matroskamux
>     ! filesink location=mjpeg.mkv
>
> Approach-2: (displays on local display device)
> gst-launch souphttpsrc
> location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
> jpegdec ! glimagesink force-aspect-ratio=true
>
> In first approach, there's a step of demuxing multipart encoded JPEGs,
> and then possibly specifying image decode with certain attributes. In
> second approach I don't see any multipart encode handling, and direct
> invocation of jpeg-decoder.
>
> In my setup, I don't even seem to have a glimagesink though !
>
>
> ~ Icarus
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error reading an IP camera MJPEG stream

Icarus Alive
On Thu, Sep 1, 2011 at 7:47 PM, Mailing List SVR
<[hidden email]> wrote:

> Il 01/09/2011 13:32, Icarus Alive ha scritto:
>>
>> Hi,
>>
>> Got a rather tacky little east-asian IP camera (apparently a Foscam
>> knock-off), and trying to write a little DIY DVR (of sorts) for it on
>> Linux (Debian 'Sid'). Here's the command I use:
>>
>> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
>> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
>> do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink
>
> try
>
> gst-launch souphttpsrc location=... ! jpegparse ! jpegdec ! xvimagesink
> sync=false
>

Hello Nicola,

Here's what I get with that...

icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi !
jpegparse ! jpegdec ! xvimagesink
WARNING: erroneous pipeline: no element "jpegparse"

and...

icarus@crunchex:~$ gst-inspect-0.10 jpegparse
No such element or plugin 'jpegparse'


and, I tried the following...

icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi !
jpegdec ! xvimagesink sync=false
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not
initialise Xv output
Additional debug info:
xvimagesink.c(1433): gst_xvimagesink_get_xv_support ():
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
No port available
Setting pipeline to NULL ...
Freeing pipeline ...


So, no luck so far.

~Icarus

>>
>> and here's what I get.
>>
>> Setting pipeline to PAUSED ...
>> Pipeline is PREROLLING ...
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
>> video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
>> framerate=(fraction)0/1
>> ERROR: from element
>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
>> error.
>> Additional debug info:
>> gstbasesrc.c(2582): gst_base_src_loop ():
>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
>> streaming task paused, reason not-negotiated (-4)
>> ERROR: pipeline doesn't want to preroll.
>> Setting pipeline to NULL ...
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
>> /GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
>> caps = NULL
>> Freeing pipeline ...
>>
>> The username/password for the challenged domain is correct, as I can
>> test it with exact same URL in Firefox, and similarly in vlc. Could
>> someone suggest what I should be checking and what might be wrong ?
>>
>> On reading around, I found 2 different syntaxes on reading MJPEG
>> streams off IP cams, and not sure which one is to be used, and what's
>> the difference --
>>
>> Approach-1: (writes to file)
>> gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
>> do-timestamp=true ! multipartdemux
>>    ! image/jpeg,width=640,height=480 ! matroskamux
>>    ! filesink location=mjpeg.mkv
>>
>> Approach-2: (displays on local display device)
>> gst-launch souphttpsrc
>> location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
>> jpegdec ! glimagesink force-aspect-ratio=true
>>
>> In first approach, there's a step of demuxing multipart encoded JPEGs,
>> and then possibly specifying image decode with certain attributes. In
>> second approach I don't see any multipart encode handling, and direct
>> invocation of jpeg-decoder.
>>
>> In my setup, I don't even seem to have a glimagesink though !
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error reading an IP camera MJPEG stream

Wim Taymans
In reply to this post by Icarus Alive
On 09/01/2011 01:32 PM, Icarus Alive wrote:
> Hi,
>
> Got a rather tacky little east-asian IP camera (apparently a Foscam
> knock-off), and trying to write a little DIY DVR (of sorts) for it on
> Linux (Debian 'Sid'). Here's the command I use:
>
> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
> do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink

You need .. ! jpegdec ! ffmpegcolorspace ! autovideosink

Wim

>
> and here's what I get.
>
> Setting pipeline to PAUSED ...
> Pipeline is PREROLLING ...
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
> video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
> framerate=(fraction)0/1
> ERROR: from element
> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
> error.
> Additional debug info:
> gstbasesrc.c(2582): gst_base_src_loop ():
> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
> streaming task paused, reason not-negotiated (-4)
> ERROR: pipeline doesn't want to preroll.
> Setting pipeline to NULL ...
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
> /GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
> caps = NULL
> Freeing pipeline ...
>
> The username/password for the challenged domain is correct, as I can
> test it with exact same URL in Firefox, and similarly in vlc. Could
> someone suggest what I should be checking and what might be wrong ?
>
> On reading around, I found 2 different syntaxes on reading MJPEG
> streams off IP cams, and not sure which one is to be used, and what's
> the difference --
>
> Approach-1: (writes to file)
> gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
> do-timestamp=true ! multipartdemux
>     ! image/jpeg,width=640,height=480 ! matroskamux
>     ! filesink location=mjpeg.mkv
>
> Approach-2: (displays on local display device)
> gst-launch souphttpsrc
> location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
> jpegdec ! glimagesink force-aspect-ratio=true
>
> In first approach, there's a step of demuxing multipart encoded JPEGs,
> and then possibly specifying image decode with certain attributes. In
> second approach I don't see any multipart encode handling, and direct
> invocation of jpeg-decoder.
>
> In my setup, I don't even seem to have a glimagesink though !
>
>
> ~ Icarus
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error reading an IP camera MJPEG stream

Mailing List SVR
In reply to this post by Icarus Alive
Il 01/09/2011 19:50, Icarus Alive ha scritto:

> On Thu, Sep 1, 2011 at 7:47 PM, Mailing List SVR
> <[hidden email]>  wrote:
>> Il 01/09/2011 13:32, Icarus Alive ha scritto:
>>> Hi,
>>>
>>> Got a rather tacky little east-asian IP camera (apparently a Foscam
>>> knock-off), and trying to write a little DIY DVR (of sorts) for it on
>>> Linux (Debian 'Sid'). Here's the command I use:
>>>
>>> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
>>> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
>>> do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink
>> try
>>
>> gst-launch souphttpsrc location=... ! jpegparse ! jpegdec ! xvimagesink
>> sync=false
>>
> Hello Nicola,
>
> Here's what I get with that...
>
> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi !
> jpegparse ! jpegdec ! xvimagesink
> WARNING: erroneous pipeline: no element "jpegparse"
>
> and...
>
> icarus@crunchex:~$ gst-inspect-0.10 jpegparse
> No such element or plugin 'jpegparse'


jpegparse is in -bad plugins, do you have gstreamer plugins bad
installed? If yes what version are you using?

I think jpegparse is in -bad since 0.10.21

Nicola


>
>
> and, I tried the following...
>
> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi !
> jpegdec ! xvimagesink sync=false
> Setting pipeline to PAUSED ...
> ERROR: Pipeline doesn't want to pause.
> ERROR: from element
> /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0: Could not
> initialise Xv output
> Additional debug info:
> xvimagesink.c(1433): gst_xvimagesink_get_xv_support ():
> /GstPipeline:pipeline0/GstXvImageSink:xvimagesink0:
> No port available
> Setting pipeline to NULL ...
> Freeing pipeline ...
>
>
> So, no luck so far.
>
> ~Icarus
>
>>> and here's what I get.
>>>
>>> Setting pipeline to PAUSED ...
>>> Pipeline is PREROLLING ...
>>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
>>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
>>> video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
>>> framerate=(fraction)0/1
>>> ERROR: from element
>>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
>>> error.
>>> Additional debug info:
>>> gstbasesrc.c(2582): gst_base_src_loop ():
>>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
>>> streaming task paused, reason not-negotiated (-4)
>>> ERROR: pipeline doesn't want to preroll.
>>> Setting pipeline to NULL ...
>>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
>>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
>>> /GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
>>> caps = NULL
>>> Freeing pipeline ...
>>>
>>> The username/password for the challenged domain is correct, as I can
>>> test it with exact same URL in Firefox, and similarly in vlc. Could
>>> someone suggest what I should be checking and what might be wrong ?
>>>
>>> On reading around, I found 2 different syntaxes on reading MJPEG
>>> streams off IP cams, and not sure which one is to be used, and what's
>>> the difference --
>>>
>>> Approach-1: (writes to file)
>>> gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
>>> do-timestamp=true ! multipartdemux
>>>     ! image/jpeg,width=640,height=480 ! matroskamux
>>>     ! filesink location=mjpeg.mkv
>>>
>>> Approach-2: (displays on local display device)
>>> gst-launch souphttpsrc
>>> location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
>>> jpegdec ! glimagesink force-aspect-ratio=true
>>>
>>> In first approach, there's a step of demuxing multipart encoded JPEGs,
>>> and then possibly specifying image decode with certain attributes. In
>>> second approach I don't see any multipart encode handling, and direct
>>> invocation of jpeg-decoder.
>>>
>>> In my setup, I don't even seem to have a glimagesink though !

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Error reading an IP camera MJPEG stream

Icarus Alive
In reply to this post by Wim Taymans
On Thu, Sep 1, 2011 at 11:23 PM, Wim Taymans <[hidden email]> wrote:

> On 09/01/2011 01:32 PM, Icarus Alive wrote:
>>
>> Hi,
>>
>> Got a rather tacky little east-asian IP camera (apparently a Foscam
>> knock-off), and trying to write a little DIY DVR (of sorts) for it on
>> Linux (Debian 'Sid'). Here's the command I use:
>>
>> icarus@crunchex:~$ gst-launch-0.10 -v souphttpsrc
>> location=http://icarus:icarus123@192.168.1.20:8012/videostream.cgi
>> do-timestamp=true ! multipartdemux ! jpegdec ! autovideosink
>
> You need .. ! jpegdec ! ffmpegcolorspace ! autovideosink

Perfect. That worked. Any particular reason why the ffmpegcolorspace
filter was required ?
Didn't find any example using this element.

>>
>> and here's what I get.
>>
>> Setting pipeline to PAUSED ...
>> Pipeline is PREROLLING ...
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = image/jpeg
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps =
>> video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
>> framerate=(fraction)0/1
>> ERROR: from element
>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0: Internal data flow
>> error.
>> Additional debug info:
>> gstbasesrc.c(2582): gst_base_src_loop ():
>> /GstPipeline:pipeline0/GstSoupHTTPSrc:souphttpsrc0:
>> streaming task paused, reason not-negotiated (-4)
>> ERROR: pipeline doesn't want to preroll.
>> Setting pipeline to NULL ...
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:src: caps = NULL
>> /GstPipeline:pipeline0/GstJpegDec:jpegdec0.GstPad:sink: caps = NULL
>> /GstPipeline:pipeline0/GstMultipartDemux:multipartdemux0.GstPad:src_0:
>> caps = NULL
>> Freeing pipeline ...
>>
>> The username/password for the challenged domain is correct, as I can
>> test it with exact same URL in Firefox, and similarly in vlc. Could
>> someone suggest what I should be checking and what might be wrong ?
>>
>> On reading around, I found 2 different syntaxes on reading MJPEG
>> streams off IP cams, and not sure which one is to be used, and what's
>> the difference --
>>
>> Approach-1: (writes to file)
>> gst-launch -v souphttpsrc location=http://10.11.12.13/mjpeg
>> do-timestamp=true ! multipartdemux
>>    ! image/jpeg,width=640,height=480 ! matroskamux
>>    ! filesink location=mjpeg.mkv
>>
>> Approach-2: (displays on local display device)
>> gst-launch souphttpsrc
>> location=http://admin:1234@192.168.1.150/mjpg/video.mjpg timeout=5 !
>> jpegdec ! glimagesink force-aspect-ratio=true
>>
>> In first approach, there's a step of demuxing multipart encoded JPEGs,
>> and then possibly specifying image decode with certain attributes. In
>> second approach I don't see any multipart encode handling, and direct
>> invocation of jpeg-decoder.
>>
>> In my setup, I don't even seem to have a glimagesink though !
>>
>>
>> ~ Icarus
>> _______________________________________________
>> gstreamer-devel mailing list
>> [hidden email]
>> http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel