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