Achtung! dieser Artikel wurde nicht von einem Muttersprachler geschrieben. Bitte das bei Kritik berücksichtigen. Ich (bed) habe nur die rudimentäre Grammatik und Syntax angepasst.
Die Entwickler von Cheese stehen unter einem Dilemma. Performance und Echtzeitaufnahme. Man sollte genug CPU Leistung haben um sich selbst im Echtzeit aufzunehmen und gleichzeitig in ein passendes Format zu komprimieren. Da ich das selber auf meinem Netbook besonders stark erlebte, wollte ich meine Nase in dieses Problem stecken.
Die erste Frage ist natürlich: welche minimale CPU Leistung ist genug? Muss man den Encoder optimieren dass es noch schneller geht?
Es kam aber raus, so tief in der Codec muss man gar nicht gehen. Wenn der Codec nur das machen würde was sinnvoll ist, würde es schon viel besser gehen. Da fing das Problem an - die WebCams. Man will natürlich immer das bestmögliche Bild haben.
Nun man spricht die WebCam an und sagt: sag mir das beste was du kannst. In meinem Netbook stecke eine von billigsten. Nun die sagt: 1280x1024 und 30fps. Wenn es noch bei keinem klingelt: Eine DVD macht in der Regel 720x576 und 25fps. Natürlich ist der Encoder mit dem hochauflösenden Hochgeschwindigkeitvideo beschäftigt. Auch für meine LeistungsCPU ist es eine harte Aufgabe. Das Blöde in der ganzen Geschichte war, die WebCam lieferte gar keine 30fps, es kam nur 5fps raus. Aber weil Container keine wechselnde framerate handlen konnte, musste man einen Stabilisator ansetzen. Das heißt wenn man keine 30fps bekommt, muss man so lange Duplicate Frames produzieren bis da 30fps herauskommen. Für uns heißt das 10% nützliche Leistung, alles andere ist Verschwendung. Die Geschichte ist immer noch nicht zu Ende, da es einige Bugs gibt.
In der Zwischenzeit prüfte ich noch eine andere Cam und stellte fest, auch meine Super Logitech verspricht auf den Packung 30fps. In der Praxis macht sie 15fps mit guten Beleuchtung. Wenn man eine 1000W Lampe einsetzt für Beleuchtung, bekommt man schon ~25fps.
In einer Diskussion, welche Auflösung und FPS man ansetzen sollte, viele Nutzer waren überzeugt das es nicht unter 25fps gehen sollte. Keiner wusste dass sie schon mit 10fps zufrieden waren.
Ich bin zu 99% überzeugt dass, eure Cam auch lügt. Nun schlage ich vor es zu testen und zu prüfen mit wieviel FPS seit ihr zufrieden?
Hier ist der Befehl um es zu testen:
gst-launch-0.10 -v v4l2src ! ffmpegcolorspace ! fpsdisplaysink
Damit wird die WebCam durch v4l2src angesprochen, mit ffmpegcolorspace das Farbsystem für den Ausgang fpsdisplaysink konvertiert. Im Videofenster sollte es aktuelle Framerate zeigen (falls nicht, dann im Terminal). In diesem Beispiel wird es aber die größte Auflösung nutzen und vielleicht weniger Frames produzieren. Für etwas kleineres Auflösung nehmen wir:
gst-launch-0.10 -v v4l2src ! ffmpegcolorspace ! video/x-raw-yuv,width=352,height=288 ! fpsdisplaysink
Bin gespannt welche Ergebnisse von euch kommen
Danke für den interessanten Artikel. Ich habe hier mit meiner Genius Look 312p einen Durchschnitt von 12,5 FPS ohne Zusatzbeleuchtung, nur die Morgensonne von außen. Die kleine Auflösung konnte ich leider nicht testen, da der Befehl bei mir abbricht
Interessanter Artikel. Erstaunlich, was mit Gstreamer alles möglich ist.
Mit meiner Logitech Quickam 9000 pro komme ich bei größter Auflösung (1600x1200) auf ca 5fraps, die kleine schafft 15fraps im Schnitt
Das und der Zusammenhang mit der Beleuchtung ist mir aber schon aufgefallen
Aber weiter so mit den Artikel
Habe auch eine quickam 9000 pro und sie immer maximal 5 fps
. kann man da was verbessern ?
Framerate ist von Beleuchtung und Auflösung abhängig. Desto größer ist Auflösung desto weniger Frames kann produziert werden. Ich werde so tippen dass, beste Auflösung für dein Cam ist 640x400
Warum korrigierst du die Artikel nicht einfach? Finde es extrem störend.
Ist ja vollkommen unabhängig vom Inhalt.
Was jetzt? Ich habe diesen Artikel bereits bearbeitet, so schlimm ist er doch nicht. Oder meinst du den Orangen Trailer von mir? Soll ich es nun wieder entfernen?
Ich denke es geht um den letzten Befehl. Dieser scheint bei Jan und mir + ? nicht zu funktionieren. Hier mal meine Fehlermeldung:
Trotzdem vielen Dank für die Serie. Das Herumspielen macht -wie im letzten Artikel schon gesagt- sehr viel Spaß. Dort habe ich sogar den Fehler in einem der Befehle herausgefunden und gepostet - vielleicht korrigierst du erstmal da, solange ihr nicht wisst woran oben genannte Fehlermeldung liegt.
Gruß
Pa_trick17
Wahrscheinlich eure Cams unterstützen vorgegebene Auflösung nicht. Bei UVC (universal video class) WebCams die Auflösung kann man mit "uvcdynctrl -f" rausfinden.
Hallo.
Ich hab' uvcdynctrl mal installiert. Der von dir vorgeschlagene Befehl liefert folgendes Ergebnis:
Das Format 352x288 ist dabei. Allerdings ist nur bei der untersten Ausgabe von "Frame rates" die Rede. Ansonsten sind es "Frame intervals". Was sollen Intervalle in diesem Zusammenhang sein?
Die 5 bei Frame rates kann ich jedoch bestätigen. Das ist der (unbefriedigende) Wert welcher bei
kommt.
Gruß
Pa_trick17
P.S. Echt spannende Sache - vielen Dank für die vielen Anregungen!
Mit Frame Interwals sind Framerates gemeint. Wahrscheinlich weil es mehreren für Auswahl gibt, haben die es als Interwal bezeichent. (mit anderen Worten keine Ahnung) Ich habe deine Fellerdmeldung noch mal geprüft, da fehlt eine Teil des Befehls. Versuche doch noch mal, genau so wie es dort steht:
gst-launch-0.10 -v v4l2src ! ffmpegcolorspace ! video/x-raw-yuv,width=352,height=288 ! fpsdisplaysink
Hallo Alexey
Vielen Dank für den super Artikel
Aus diesem Grund, dem Zeitlupenmodus habe ich kürzlich meine Microsoft Lifecam 3000 bei einem Auktionshaus verkauft und eine neue LinQ mit Superauflösung und 8 LED's ersteigert. Das Ergebnis war allerdings ernüchternd, schärferes Bild aber immer noch eine extreme Verzögerung. Mit deinem Befehl habe ich 8fps bekommen. Nachdem ich die LED's eingeschaltet habe und den Kameraabstand verringert habe, siehe da satte 30fps +. Ich sehe jetzt zwar ein bisschen Krank aus Blaustich und so, aber den bringe ich schon noch weg, wie die Verzögerung. Ich gehe jetzt gleich ins Solarium.
Danke tschau
Ich erreiche bei normalen wie auch im dunklen Licht bei der maximalsten Auflösung durchgehend 28-30 FPS. Habe im Notebookdeckel eine Acer Crystal Eye-Webcam verbaut, die an sich sehr gut ist. Wers nicht glaubt: http://img822.imageshack.us/img822/3072/bildschirmfotog0.png
Das ist wirklich sehr interessant. Kannst du für mich paar Tests machen? 1) drücke die Kamera mit dem Finger zu. Welche Framerate zeigt es dann. 2) Hasst du einen Timer mit Millisekunden? kannst du den Timer mit deine Kam aufnehmen mit diesen Befehl?
gst-launch-0.10 v4l2src ! ffmpegcolorspace ! pngenc snapshot=false ! multifilesink location=output-%05d.png
das wird eine Stapel von PNG produzieren, jeder Frame ist ein File. Dann muss man prüfen ob da Dopplungen gibt. Ich hab einen verdacht, dass die Kamera Dopplungen produziert.
Das Problem von Cheese ist aber ja erst mit dem letzten Release so gravierend.
Ich frage mich, warum man nicht einfach im nativen Format der Webcam aufnimmt, und erst nach Ende der Aufnahme in das Zielformat kodiert? Und ohnehin wäre es nett, auch in einem (möglichst) verlustfreien Format speichern zu können, anstatt auf Theora festgelegt zu sein. Dann könnte man sich den Encoding-Schritt ganz sparen. Gerade, wenn man das Video noch weiterbearbeiten will, macht Theora gar keinen Sinn.
Eigentlich mag ich GStreamer-basierte GNOME-Anwendungen, aber Cheese ist in meinen Augen derzeit eher Spielerei als eine sinnvolle Webcam-Anwendung. guvcview ist zwar ein usabilitytechnischer Albtraum, aber bringt Webcam-Bilder schnell und in guter Qualität auf den Rechner.
Naja, urteile doch selbst. Ein Webcam produziert in der Regel jpeg oder raw Format. Jpeg ist nicht verlustfrei und nicht jeder Cam das macht. Raw can jede Cam, aber 30 Sekunden Aufnahme 320x240 @ 30fps wird kosten um 130 MB. Wie viel Speicher wird fressen wenn du einen 30 Minuten Videoreportage machen willst? Also damit wird wirklich kein zufrieden.
Äbrigens, guvcview nimmt im MJPEG auf.
Ich glaube optimale Lösung wehre, dem Nutzer Wahl zu geben.
Meine scheint auch nicht zu lügen: text = "current: 30,00\naverage: 36,00" text = "current: 30,00\naverage: 51,00" text = "current: 30,24\naverage: 33,00" text = "current: 30,00\naverage: 40,50" text = "current: 30,00\naverage: 32,00" text = "current: 30,00\naverage: 37,00"
das hält sich auch so, Kamera zuhalten: frames gehen runter auf ca. 5-9
habe auch deinen Befehl mit den PNGs ausgeführt und die Dateien per md5 überprüft, alle unterschiedlich, haben aber auch alle unterschiedliche Größen.
Bus 002 Device 028: ID eb1a:2571 eMPIA Technology, Inc.
Das ist sehr gut. Kannst du vielleicht welche Review von deiner Kamera machen. Damit Leute auch gute Sachen kaufen können
Wie ist das Bildqualität?
Es wehre auch interessant mal ein Chart von WebCams zu machen. Man braucht aber irgendwelche Referenzbild und Referenzbeleuchtung.