Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
Benutzeravatar
speefak
Beiträge: 439
Registriert: 27.04.2008 13:54:20

Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Beitrag von speefak » 09.05.2018 14:45:43

Hallo,

ich frage mich gerade ob eine USB 2.0 Verbindung (30 Mb /s) für den Betrieb mehrere Webcams ausreichen würde.

Es geht um folgendes Szenario :

Aktuell läuft eine Webcam mit einer Auflösung von 1600x1200x24 Datenformat mjpeg über USB 2.0. Überschlage ich die Datenrate grob ( 1600×1200×24×10 /(8*1024*1024) ) komme auf ca. 55 MB /s . USB 2.0 packt allerdings kaum über 30-35 MB/s. Irgentwo passt da was mit der Berechnung nicht so richtig :roll:

Ich würde nun noch 2 Webcams mehr über einen USB-Hub an die USB Leitung hängen und Frage mich nun ob die Datenrate dann noch ausreicht. Es liegt ein 10m USB 2.0 Kabel. Falls der Strom vom USB 2.0 Port nicht ausreicht kann ich auf USB 3.0 "aufstocken" . Reicht da die für USB 2.0 ausgelegte Verlängerung in Bezug auf die Datenrate ? Sollte das funktionieren und ich schließe die Webcams an einen USB 3 Hub an erfolgt die Übertragung vom HUB zum Server dann mit USB 3.0 und von der Cam zum Hub mit USB 2.0 ?

EDIT : 2-3 Wecam scheint USB 2.0 zu verkraften : https://cycling74.com/forums/multiple-3 ... w-it-works

EDIT 2 : https://stackoverflow.com/questions/668 ... -not-linux - Linux scheint da nicht mit klar zu kommen :/

EDIT 3 : es geht wohl doch : https://www.96boards.org/documentation/ ... ra.md.html

PS: Da bleibt mir wohl nur die try and error Methode 8O

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Beitrag von MSfree » 09.05.2018 15:30:39

speefak hat geschrieben: ↑ zum Beitrag ↑
09.05.2018 14:45:43
Aktuell läuft eine Webcam mit einer Auflösung von 1600x1200x24 Datenformat mjpeg über USB 2.0. Überschlage ich die Datenrate grob ( 1600×1200×24×10 /(8*1024*1024) ) komme auf ca. 55 MB /s .
Mit deinen Faktoren komme ich nicht ganz klar.
OK, 1600x1200 ist die Breite und Höhe des Sensors, 24 sind offensichtlich die 3 x 8Bit für RGB, aber was soll die 10? Sind das die Bilder pro Sekunde?

Die Frage ist auch, ob der mjpeg-Strom direkt aus der Kamera schon komprimiert kommt, so daß über den USB nur der komprimierte Strom transportiert werden muß, oder ob die Kamera Rohdaten liefert, die in der CPU zu eine mjpeg-Strom verrechnet werden.

Der Sensor generiert bei 1600x1200 Pixeln auch keine 1600x1200*3 Bytes an Daten pro Bild sondern nur 1600x1200 Bytes, also ein Intensitätswert pro Pixel. Dank Bayerpattern tragen 50% der Pixel Grüninformationen, und jeweils 25% der Pixel Rot- bzw. Blauinformationen. Das volle RGB-Bild läßt man erst in der CPU hochrechnen. Es fallen also nur 1920000Bytes pro Bild an.

Ein typischer mjpeg-Strom kann eine Kompressionsrate von 10-100 erreichen meist liegt sie um etwa 30, so daß aus einem 1600x1200 Pixel Sensor nur etwa 64kByte pro Bild an Daten generiert werden. Bei 60FPS hätte man also etwa 4MByte/s.

Wenn die Kamera allerdings keinen mjpeg-Strom intern rechnen kann, und das der CPU überläßt, dann wäre der Datenstrom schon etwa 115MByte/s bei 60FPS, also viel zu hoch für USB2.

Ob die Kamera allerdings auch unter Linux dazu bewegt werden kann, direkt mjpeg zu liefern, was für die USB-Datenrate ziemlich zuträglich wäre, das kann ich dir nicht sagen.

Benutzeravatar
speefak
Beiträge: 439
Registriert: 27.04.2008 13:54:20

Re: Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Beitrag von speefak » 09.05.2018 15:36:02

ja, die 10 betrifft die Frames. Es handelt sich um eine Logitech c905 - damals als "high end Webcam" angepriesen, da könnte mich schon vorstellen das die mjpeg umrechnen kann.

Gibt eine Möglichkeit die eingehende Datenrate des USB Ports auszulesen ? Dann wäre es ja klar.

wanne
Moderator
Beiträge: 7448
Registriert: 24.05.2010 12:39:42

Re: Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Beitrag von wanne » 09.05.2018 16:04:37

Kameras können meist mehr als einen Modus. Die können ihr Video in verschiedenen Auflösungen und teilweise auch verschieden komprimiert ausgeben.

Code: Alles auswählen

ffmpeg -f video4linux2 -list_formats all -i /dev/video0
v4l2-ctl --list-formats
Je nach dem was du da wählst wird da die Datenrate eben ausreichen oder nicht. Deswegen auch die unterschiedlichen Ergebnisse unter Windows und Linux. Ich schätze dass der da schlicht unterschiedliche Formate gewählt hat.
Gibt eine Möglichkeit die eingehende Datenrate des USB Ports auszulesen
Fällt mir jetzt nicht ein. Vielleicht irgend wie mit Wireshark. Aber was du auf jeden Fall kannst, ist das Video einfach mal für 10 min in eine Datei zu dumpen. dann kannst du gucken wie groß das ist.
rot: Moderator wanne spricht, default: User wanne spricht.

Benutzeravatar
MSfree
Beiträge: 10686
Registriert: 25.09.2007 19:59:30

Re: Webcam Datenrate - reicht USB 2.0 für 2-3 Webcams ?

Beitrag von MSfree » 09.05.2018 16:16:10

speefak hat geschrieben: ↑ zum Beitrag ↑
09.05.2018 15:36:02
Gibt eine Möglichkeit die eingehende Datenrate des USB Ports auszulesen ? Dann wäre es ja klar.
Ich habe dies hier gefunden:
http://teslacore.blogspot.de/2016/09/ba ... s-zed.html

Auf Github gibt es auch ein usbmon Project, ich weiß aber nicht, ob Quellcode kompilieren zu deinen Hobbys gehört. :wink:
wanne hat geschrieben: ↑ zum Beitrag ↑
09.05.2018 16:04:37
Kameras können meist mehr als einen Modus. Die können ihr Video in verschiedenen Auflösungen und teilweise auch verschieden komprimiert ausgeben.

Code: Alles auswählen

ffmpeg -f video4linux2 -list_formats all -i /dev/video0
v4l2-ctl --list-formats
Das V4L-Device kann verschiedene Formate liefern. Ob diese Formate aber erst im Kernelmodul oder bereits in der Kamera generiert werden, kommt dabei nicht rüber.

Antworten