Hallo!
Ich wollte gern mal wissen, wie der Datenstrom einer handelsüblichen
USB-Webcam aussieht, also was, außer einer Reihe von Pixeldaten wird
noch übertragen? Welche Art von Headern gibt es und was steckt da drin?
Wenn ich am Rechner eine bestimmte Auflösung oder einen Farbraum
einstelle, werden dann nur andere Informationen aus dem Datenstrom
gepickt oder wird der Webcam selbst mitgeteilt, dass andere Daten
gesendet werden sollen? Oder sind es immer dieselben Informationen, die
von der PC-Software nur anders verarbeitet werden?
Wo gibt es eventuell eine übersichtliche Zusammenstellung des
Frameaufbaus?
Das Programm SnoopyPro zum sniffen der USB-Datenpakete habe ich mir
schon geladen, aber irgendwie sehen diese, verglichen mit von Wireshark
gesnifften Netzwerkpaketen viel kryptischer aus. Ich blicke jedenfalls
nicht wirklich durch. :(
TwiTwi schrieb:> Ich wollte gern mal wissen, wie der Datenstrom einer handelsüblichen> USB-Webcam aussieht, also was, außer einer Reihe von Pixeldaten wird> noch übertragen?
Schau ihn dir doch an, zB. mit Wireshark. Oder lies die Spezifikation,
zu finden auf http://www.usb.org/developers/devclass_docs ganz unten.
> Wenn ich am Rechner eine bestimmte Auflösung oder einen Farbraum> einstelle, werden dann nur andere Informationen aus dem Datenstrom> gepickt oder wird der Webcam selbst mitgeteilt, dass andere Daten> gesendet werden sollen? Oder sind es immer dieselben Informationen, die> von der PC-Software nur anders verarbeitet werden?
Warum sollte da überhaupt ein Zusammenhang bestehen?
Zuerst mal vielen Dank für den Link. Etwas in der Art habe ich gesucht.
Rolf Magnus schrieb:>> Wenn ich am Rechner eine bestimmte Auflösung oder einen Farbraum>> einstelle, werden dann nur andere Informationen aus dem Datenstrom>> gepickt oder wird der Webcam selbst mitgeteilt, dass andere Daten>> gesendet werden sollen? Oder sind es immer dieselben Informationen, die>> von der PC-Software nur anders verarbeitet werden?>> Warum sollte da überhaupt ein Zusammenhang bestehen?
Ich wollte halt wissen, was passiert, wenn ich ein Kamerabild mit
verschiedenen Auflösungen darstellen will und über ein Pull-Down-Menü
der Videosoftware einen entsprechenden Eintrag wie 160x120 oder 640x480
auswähle. Bleibt der Datenstrom durch den USB-Port derselbe und die
Software verarbeitet nur die gewünschten Informationen wird eine
entsprechend andere Forderung an die Kamera gesendet, welche dann eine
andere Art von Frame sendet?
Ich nehme an, die Antwort steht in den Spezifikationen, werde allerdings
eine Weile brauchen, die durchzuarbeiten.
ich glaube dass USB Kameras den Datenstrom komprimieren, rechne mal
aus was das unkomprimiert so wäre. Eben mal so USB Daten von der
Kamera abgreifen is da nich ...
Nachtrag:
Soweit ich weiß, ist Wireshark nur zum mitschneiden von Netzwerk-Paketen
gedacht. Selbst USB-Netzwerkgeräte sind da (unter Windows) eigentlich
schon problematisch.
@Martin: Komprimiert wird da nichts. Soweit ich bis jetzt verstanden
habe, werden sogar irgendwelche RAW-Daten transferiert, die erst ins
RGB-Format umgerechnet werden müssen.
Seh' dir mal im Linux-Kernel die Treiber für gpca-Webcams an, das sollte
deine Fragen mehr als umfassend beantworten ;) Zu finden in
drivers/media/video/gspca
TwiTwi schrieb:> Ich bin Windows-Nutzer. :p
Ist doch an dieser Stelle egal. Die Webcam ist unter Windows dieselbe,
wie unter Linux und der Treiber muss ja auch dasselbe machen, sonst
würde die Cam nicht funktionieren. Leider sind die Windows-Treiber nicht
quelloffen, sonst könntest du dir auch diese ansehen.
Deh Es Peh schrieb:> Bei allem was deutlich über VGA Auflösung @30fps hinausgeht wird bei USB> Webcams üblicherweise in MJPEG komprimiert.
Kann durchaus sein und klingt auch vernünftig. Bisher habe ich aber nur
mit einfachen Billig-Cams gearbeitet, die eine Maximum-Framerate von
30/s haben. Ich glaube, die sind dann nicht komprimiert. Zumindest habe
ich in keinem Kamera-Captureing-Programm einen Hinweis auf einen Codec
gefunden.
TwiTwi schrieb:> Kann durchaus sein und klingt auch vernünftig. Bisher habe ich aber nur> mit einfachen Billig-Cams gearbeitet, die eine Maximum-Framerate von> 30/s haben. Ich glaube, die sind dann nicht komprimiert. Zumindest habe> ich in keinem Kamera-Captureing-Programm einen Hinweis auf einen Codec> gefunden.
sotwas sollte auch der Treiber erledigen und nicht das
Kamera-Captureing-Programm.
Medi schrieb:> TwiTwi schrieb:>> Nachtrag:>> Soweit ich weiß, ist Wireshark nur zum mitschneiden von Netzwerk-Paketen>> gedacht. Selbst USB-Netzwerkgeräte sind da (unter Windows) eigentlich>> schon problematisch.>> http://wiki.wireshark.org/CaptureSetup/NetworkMedia
Ah, also geht USB nur unter Linux. Mir war nur mal vor einer Weile
aufgefallen, daß ich auf einmal in Wireshark auch USB-Ports auswählen
und deren Kommunikation ansehen konnte.
Guck dir mal die Spezifikastion handelsüblicher cmos sensoren an, den
Rest übernimmt der Treiber. Die Auflösung z.B. Die hardware wird so
einfach gehalten wie es nur geht. Nicht umsonst kostet die Dinger 15 €.