Using raspberry pi motion to stream webcams

I have a USB webcam (unknown brand, no markup) that was detected on my raspberry pie.

This is the output of lsusb

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0c45:608f Microdia PC Camera (SN9C103 + OV7630) Bus 001 Device 005: ID 1267:0103 Logic3 / SpectraVideo plc G-720 Keyboard 

However, when I start the movement, using / dev / video 0 with a single default configuration changes the resolution and disables the webcam so that I can transmit it over the network. This is my journal when I start the movement

 Log of motion -n [0] Processing thread 0 - config file /etc/motion/motion.conf [0] Motion 3.2.12 Started [0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478784 [0] Thread 1 is from /etc/motion/motion.conf [0] motion-httpd/3.2.12 running, accepting connections [0] motion-httpd: waiting for data on port TCP 8080 [1] Thread 1 started [1] cap.driver: "sonixb" [1] cap.card: "USB camera" [1] cap.bus_info: "usb-bcm2708_usb-1.2" [1] cap.capabilities=0x05000001 [1] - VIDEO_CAPTURE [1] - READWRITE [1] - STREAMING [1] Config palette index 8 (YU12) doesn't work. [1] Supported palettes: [1] 0: S910 (S910) [1] 1: BA81 (BA81) [1] Selected palette BA81 [1] Test palette BA81 (480x640) [1] Adjusting resolution from 480x640 to 160x120. [1] Using palette BA81 (160x120) bytesperlines 160 sizeimage 19200 colorspace 00000008 [1] found control 0x00980900, "Brightness", range 0,255 [1] "Brightness", default 127, current 127 [1] found control 0x00980911, "Exposure", range 0,1023 [1] "Exposure", default 66, current 66 [1] found control 0x00980912, "Automatic Gain (and Exposure)", range 0,1 [1] "Automatic Gain (and Exposure)", default 1, current 1 [1] found control 0x00980913, "Gain", range 0,255 [1] "Gain", default 127, current 127 [1] mmap information: [1] frames=4 [1] 0 length=20480 [1] 1 length=20480 [1] 2 length=20480 [1] 3 length=20480 [1] Using V4L2 [1] Resizing pre_capture buffer to 1 items [1] v4l2_next: VIDIOC_DQBUF: EIO (s->pframe 0): Input/output error [1] v4l2_next: VIDIOC_QBUF: Invalid argument [1] v4l2_next: VIDIOC_QBUF: Invalid argument [1] v4l2_next: VIDIOC_QBUF: Invalid argument [1] v4l2_next: VIDIOC_QBUF: Invalid argument [1] Error capturing first image [1] Started stream webcam server in port 8081 [1] v4l2_next: VIDIOC_QBUF: Invalid argument [1] Video device fatal error - Closing video device [1] Closing video device /dev/video0 [1] Retrying until successful connection with camera [1] cap.driver: "sonixb" [1] cap.card: "USB camera" [1] cap.bus_info: "usb-bcm2708_usb-1.2" [1] cap.capabilities=0x05000001 [1] - VIDEO_CAPTURE [1] - READWRITE [1] - STREAMING [1] Config palette index 8 (YU12) doesn't work. [1] Supported palettes: [1] 0: S910 (S910) [1] 1: BA81 (BA81) [1] Selected palette BA81 [1] Test palette BA81 (480x640) [1] Adjusting resolution from 480x640 to 160x120. [1] Using palette BA81 (160x120) bytesperlines 160 sizeimage 19200 colorspace 00000008 [1] found control 0x00980900, "Brightness", range 0,255 [1] "Brightness", default 127, current 127 [1] found control 0x00980911, "Exposure", range 0,1023 [1] "Exposure", default 66, current 66 [1] found control 0x00980912, "Automatic Gain (and Exposure)", range 0,1 [1] "Automatic Gain (and Exposure)", default 1, current 1 [1] found control 0x00980913, "Gain", range 0,255 [1] "Gain", default 127, current 127 [1] mmap information: [1] frames=4 [1] 0 length=20480 [1] 1 length=20480 [1] 2 length=20480 [1] 3 length=20480 [1] Using V4L2 [1] Camera has finally become available [1] Camera image has different width and height from what is in the config file. You should fix that [1] Restarting Motion thread to reinitialize all image buffers to new picture dimensions [1] Thread exiting [1] Calling vid_close() from motion_cleanup [1] Closing video device /dev/video0 [0] Motion thread 1 restart [1] Thread 1 started [1] config image height (120) is not modulo 16 [1] Could not fetch initial image from camera [1] Motion continues using width and height from config file(s) [1] Resizing pre_capture buffer to 1 items [1] Started stream webcam server in port 8081 [1] Retrying until successful connection with camera [1] config image height (120) is not modulo 16 [0] httpd - Finishing [0] httpd Closing [0] httpd thread exit [1] Thread exiting [0] Motion terminating 

The light in the camera lights up at the beginning and then goes out again, does anyone recognize any errors that I receive?

Thanks!

+7
source share
5 answers

I think you need to set the height and width of the image in the conf file for the camera specification. My work did not work until I set the height to 640 wide by 480. Streams are great! You just need to find out the patch for web server authentication. I currently have this streaming on my web server, which requires a login, but this can be circumvented if someone enters my IP address and im port.

+1
source

Even if it is configured differently in the conf file, the movement uses the possible resolution that it detects when it executes (at least in my experience).

In addition, it seems that an unsupported palette is set in the conf file, and the movement selects one of the two that it detects as being supported. Have you tried changing the palette setting to "0" (S910) in the conf file?

Finally, Pi USB support has some known and currently unresolved issues regarding large chunks of data. Reducing the frame rate can also help in other cases (in this case, I think I would not help, since the process is no longer with the first image).

+1
source

Try v2l4-ctl --list-format-ext to see which combinations of pixel format and image size are supported on your camera. S910 is a cheap old camera that you can upgrade.

+1
source

Your problem is in the log:

 config image height (120) is not modulo 16 

Therefore, you need a different image resolution.

See what your device supports with

 $ uvcdynctrl -f 

Choose one that has a y-resolution multiple of 16. For example. 640x480 if specified for your camera.

+1
source

I suggest you try guvcview instead of motion. It works faster and gives a much better picture on my Pi. It works under X.

Two guvcview notes - set the POWER LINE FREQUENCY frequency to your local network frequency. - Set the resolution to 640 x 480.

guvcview consumes about 50% of the processor power. Yes, use a USB hub too!

Unh.

0
source

All Articles