Package Details: mjpg-streamer r63-5

Git Clone URL: https://aur.archlinux.org/mjpg-streamer.git (read-only)
Package Base: mjpg-streamer
Description: Stream mjpeg frames from a webcam via http
Upstream URL: http://sourceforge.net/projects/mjpg-streamer
Keywords: streaming webcam
Licenses: GPL
Groups: multimedia
Provides: mjpeg-streamer
Submitter: None
Maintainer: albertnguyen
Last Packager: albertnguyen
Votes: 22
Popularity: 0.001568
First Submitted: 2009-02-20 05:19
Last Updated: 2015-06-24 08:14

Latest Comments

replabrobin commented on 2015-11-04 14:39

I think this may be a fault in my two cameras; looking at the v4l2 output I see this

v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2

so it seems neither allows for mjpeg; sorry for noise.

replabrobin commented on 2015-11-04 08:50

I have done clean installs on two x64 machines running latest Arch. When I use -i "input_uvc.so -y" I see things fine. When I run without I see the website, but the stream contains no data.

I did some debugging (even added some of my own) and there is data being grabbed and passed to the cam_thread (at least the length appears to be 2 x 640 x 480), but I don't see any frames appearing in the stream


DBG(v4l2uvc.c, init_v4l2(), 191): length: 614400 offset: 0
DBG(v4l2uvc.c, init_v4l2(), 200): Buffer mapped at address 0x7f0bc875d000.
DBG(v4l2uvc.c, init_v4l2(), 191): length: 614400 offset: 614400
DBG(v4l2uvc.c, init_v4l2(), 200): Buffer mapped at address 0x7f0bc86c7000.
DBG(v4l2uvc.c, init_v4l2(), 191): length: 614400 offset: 1228800
DBG(v4l2uvc.c, init_v4l2(), 200): Buffer mapped at address 0x7f0bc7954000.
DBG(v4l2uvc.c, init_v4l2(), 191): length: 614400 offset: 1843200
DBG(v4l2uvc.c, init_v4l2(), 200): Buffer mapped at address 0x7f0bc78be000.
DBG(output_http.c, output_init(), 85): output #00
DBG(output_http.c, output_init(), 118): argv[0]=HTTP output plugin
DBG(output_http.c, output_init(), 118): argv[1]=-w
DBG(output_http.c, output_init(), 118): argv[2]=./www
DBG(output_http.c, output_init(), 118): argv[3]=-n
DBG(output_http.c, output_init(), 176): case 6,7
DBG(output_http.c, output_init(), 186): case 8,9
o: www-folder-path...: ./www/
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: disabled
DBG(mjpg_streamer.c, main(), 354): starting input plugin
DBG(mjpg_streamer.c, main(), 358): starting 1 output plugin(s)
DBG(output_http.c, output_run(), 229): launching server thread #00
DBG(httpd.c, server_thread(), 798): waiting for clients to connect
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currPictSize=614400
DBG(input_uvc.c, cam_thread(), 708): copying frame
DBG(input_uvc.c, cam_thread(), 724): waiting for next frame
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currPictSize=614400
DBG(input_uvc.c, cam_thread(), 708): copying frame
DBG(input_uvc.c, cam_thread(), 724): waiting for next frame
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currPictSize=614400
DBG(input_uvc.c, cam_thread(), 708): copying frame
DBG(input_uvc.c, cam_thread(), 724): waiting for next frame
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currPictSize=614400
DBG(input_uvc.c, cam_thread(), 708): copying frame
DBG(input_uvc.c, cam_thread(), 724): waiting for next frame
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currPictSize=614400
DBG(input_uvc.c, cam_thread(), 708): copying frame
DBG(input_uvc.c, cam_thread(), 724): waiting for next frame
DBG(v4l2uvc.c, uvcGrab(), 320): bytesused=614400
DBG(v4l2uvc.c, uvcGrab(), 337): bytes in used 614400
DBG(input_uvc.c, cam_thread(), 680): received frame of size: 0 currP

albertnguyen commented on 2015-11-04 01:15

@replabrobin I have no problem upgrading to linux 4.2.5-1. What happens if you perform a clean installation of mjpg-streamer?

replabrobin commented on 2015-11-03 21:13

I'm finding that the problem with mjpeg is back even with the patch in place; course my kernel is 4.2.5-1

mdevaev commented on 2015-04-11 23:27

Please add armv6h to architectures for raspberry pi :-)

albertnguyen commented on 2015-02-24 09:19

Build sources have been updated with libc's patch.

albertnguyen commented on 2015-02-24 08:51

Build sources are updated with libc's patch.

libc commented on 2015-02-11 00:47

It appears that a recent kernel update (3.15?) broke the UVC plugin so that streaming doesn't work out of the box unless you set the '-y' option to force YUYV streaming mode. I was able to fix the issue so that it works again using MJPEG streaming mode (which uses far less CPU). Since it appears the project has been abandoned upstream and none of the various Github clones I found appear to be the current canonical version, I'm posting my patch here in case it helps someone.

diff -rupN ./orig/src/mjpg-streamer-r63/plugins/input_uvc/input_uvc.c ./patched/src/mjpg-streamer-r63/plugins/input_uvc/input_uvc.c
--- ./orig/src/mjpg-streamer-r63/plugins/input_uvc/input_uvc.c 2015-02-02 21:35:03.593996063 -0500
+++ ./patched/src/mjpg-streamer-r63/plugins/input_uvc/input_uvc.c 2015-02-02 22:04:30.066953871 -0500
@@ -706,7 +706,7 @@ void *cam_thread( void *arg ) {
}
else {
DBG("copying frame\n");
- pglobal->size = memcpy_picture(pglobal->buf, videoIn->tmpbuffer, videoIn->buf.bytesused);
+ pglobal->size = memcpy_picture(pglobal->buf, videoIn->tmpbuffer, videoIn->currPictSize);
}

#if 0
diff -rupN ./orig/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.c ./patched/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.c
--- ./orig/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.c 2015-02-02 21:35:03.523996063 -0500
+++ ./patched/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.c 2015-02-02 22:04:29.986993871 -0500
@@ -333,6 +333,7 @@ int uvcGrab(struct vdIn *vd)
*/

memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused);
+ vd->currPictSize = vd->buf.bytesused;

if (debug)
fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused);
diff -rupN ./orig/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.h ./patched/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.h
--- ./orig/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.h 2015-02-02 21:35:03.443996063 -0500
+++ ./patched/src/mjpg-streamer-r63/plugins/input_uvc/v4l2uvc.h 2015-02-02 22:04:29.867053871 -0500
@@ -73,6 +73,7 @@ struct vdIn {
int framecount;
int recordstart;
int recordtime;
+ int currPictSize
};

rpodgorny commented on 2014-03-20 21:39

==> WARNING: Using a PKGBUILD without a package() function is deprecated.

quite commented on 2012-08-24 07:21

I need this in the PKGBUILD, to get it built:
options=(!makeflags)

Seems it doesn't like my MAKEFLAGS="-j2"

tri1976 commented on 2012-08-21 00:31

@malangot,
Thanks for the comment. I have updated PKGBUILD to depend on imagemagick

Anonymous comment on 2012-08-20 09:19

Thx for your contribution.

I have need to imagemagick for use "convert" a the end of compile.

I think you need to add to depend.

Anonymous comment on 2012-07-24 16:07

总体不错!可惜不支持我的摄像头,要是可以修改为可支持V4L的USB摄像头就好了!

tri1976 commented on 2010-05-15 16:26

It works for 64-bit system. Please add it to PKGBUILD