2013-01-06 6 views
7

Ich habe eine USB-Webcam (unbekannte Marke, keine Markierungen), die auf meinem Raspberry Pi erkannt wurde.mit Bewegung auf Raspberry Pi für Webcam-Streaming-Ausgabe

Dies ist die Ausgabe von 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 

jedoch, wenn ich Bewegung ausführen, mit/dev/video0 mit der einzigen Standardkonfiguration der Auflösung und Einstellung des Webcam Host-off geändert, so dass ich es auf einem streamen Netzwerk. Das ist mein log, wenn ich Bewegung laufen

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 

Das Licht an der Kamera auf beim Start kommt und dann wieder erlischt, hat jemand eine der Fehler erkennen ich erhalte?

Danke!

+0

Meine Webcam ist kompatibel mit l4v2, und ich habe andere Video-Eingabemethoden wie fswebcam versucht. Immer noch ohne Erfolg. Eine Sache, die ich noch nicht ausprobiert habe, ist die Verwendung eines angetriebenen USB-Hubs, momentan benutze ich ihn nur direkt vom Board mit 700mA, es reicht vielleicht nicht aus, um meine Webcam zu betreiben. – FredoAF

+1

Durch mehrere Versuche mit meiner USB-Tastatur und HDMI-Kabel getrennt, ich bin in der Lage, Bewegung zu bekommen, einige Bilder vor dem Scheitern mit einem Input-Output-Fehler zu bekommen. Alle Bilder sahen so aus - http://s7.postimage.org/mjb0z2wwn/01_20130115174957_01.jpg Daher werde ich davon ausgehen, dass ich mehr Leistung brauche und werde einen powered USB-Hub kaufen und geben Sie einen Versuch – FredoAF

Antwort

0

Ich würde vorschlagen, Sie Guvcview statt Bewegung versuchen. Es läuft schneller und gibt ein viel besseres Bild auf meinem Pi. Es läuft unter X.

Zwei Anmerkungen von guvcview - stellen Sie POWER LINE FREQUENCY zu Ihrer lokalen Netzfrequenz ein. - Auflösung auf 640 x 480 einstellen.

guvcview benötigt etwa 50% Prozessorleistung. Ja, benutze auch einen USB-Hub!

Unh.

+0

ich versucht, aber nicht funktioniert. Warten auf meinen USB-Hub zu kommen und versuchen Sie es erneut mit Bewegung – FredoAF

1

Ich denke, Sie müssen die Höhe und Breite für das Bild in der Conf-Datei auf Ihre Kamera-Spezifikation einstellen. Meins arbeitete nicht, bis ich Höhe 640 Breite 480 setzte. Ströme groß! Ich muss nur den Patch für die Webstream-Authentifizierung herausfinden. momentan habe ich diese streaming auf meinen webserver, der eine anmeldung erfordert aber diese kann umgangen werden, wenn jemand meine IP plus den port im streaming eingibt.

+0

Ich spielte mit der Auflösung, ich denke, in dem Beispiel Ive Posted Ich setze die Höhe und Breite um den falschen Weg - Einstellung der Auflösung von 480x640 bis 160x120. also werde ich das versuchen. – FredoAF

+0

Entschuldigung ... Breite 680 Höhe 480 – Wheezy

+0

Ja, das ist was ich meinte, in meinem Beispiel ist es 480x640 zu 160x120, so dass ich es 680x480 einstellen sollte – FredoAF

1

Auch wenn in der Datei conf anders konfiguriert ist, verwendet motion die mögliche Auflösung, die es erkennt, wenn es ausgeführt wird (zumindest meiner Erfahrung nach).

Es scheint auch eine nicht unterstützte Palette in der Datei conf Datei festgelegt und Bewegung wählt eine der beiden erkennt es als unterstützt. Haben Sie versucht, die Einstellung der Palette auf "0" (S910) in der Datei conf zu ändern?

Schließlich hat die USB-Unterstützung des Pi einige bekannte und jetzt ungelöste Probleme in Bezug auf große Datenmengen. Das Verringern der Framerate kann auch in anderen Fällen helfen (in diesem Fall würde ich meiner Meinung nach nicht helfen, da der Prozess bereits mit dem ersten Bild fehlschlägt).

1

Versuchen Sie v2l4-ctl --list-format-ext, um zu sehen, welche Kombinationen aus Pixelformat und Bildgröße auf Ihrer Kamera unterstützt werden. Die S910 ist eine billige alte Kamera, die Sie vielleicht aufrüsten möchten.

1

Ihr Problem ist im Protokoll:

config image height (120) is not modulo 16 

So benötigen Sie eine andere Bildauflösung.

Sehen Sie, was Ihr Gerät mit

$ uvcdynctrl -f 

eine auswählen, die eine y-Auflösung hat unterstützt, die ein Vielfaches von 16 Z. B. ist 640x480, wenn dieser für Ihre Kamera aufgelistet ist.