| Webcam-SW: CPU-Auslastung
Frage von Anselm Rapp:
Hallo,
ich habe schon diverse Demo-Versionen von Webcam-Software ausprobiert. Einigen fehlten wichtige Features, insbesondere zwei andere finde ich gut, aber sie lasten im Gegensatz zu den anderen die CPU laut Windows-Taskmanager ganz erheblich aus: eine schwankt zwischen 55 % und 95 % (;!), die andere immerhin so bis zu 35 %. Ich kapiere nicht, warum manche die CPU fast gar nicht und manche so beträchtlich beanspruchen, wenn ich doch nur alle fünf Minuten eine Aufnahme per FTP sende. Bei jeder Software ist das Bild auf dem SW-Monitor "live", d. h. die Kamera(;-verbindung) wird bei jeder Software aufrechterhalten.
Ich wäre dankbar, wenn mich jemand schlau machen könnte.
Gruß, Anselm
-- Antworten bitte in der Newsgroup.
==> *Die* Empfehlung fuer Webmaster: www.rettet-das-internet.de <==
Antwort von Heiko Nocon:
Anselm Rapp wrote:
>Ich kapiere nicht, warum >manche die CPU fast gar nicht und manche so beträchtlich beanspruchen, >wenn ich doch nur alle fünf Minuten eine Aufnahme per FTP sende.
Das Senden eines einzelnen Bildes aller 5 Minuten ist dafür natürlich nicht verantwortlich.
>Bei >jeder Software ist das Bild auf dem SW-Monitor "live", d. h. die >Kamera(;-verbindung) wird bei jeder Software aufrechterhalten.
Die Art dieser Vorschau ist der springende Punkt, teilweise aber auch die Art, wie die Einzelbilder zum Senden abgegriffen werden. Man (;Programmierer) kann verschiedene Techniken bzw. OS-Schnittstellen benutzen, um einen Videostream von einem Capturegerät zu holen, Bilder abzugreifen und den Stream zur Anzeige zu bringen.
Die dümmste Lösung ist, sämtliche Einzelbilder vom Capturegerät in den RAM (;und den Kontext der Anwendung) zu holen, sie dort mit der CPU zu skalieren und das Ergebnis aus dem RAM (;und dem Kontext der Anwendung) wieder an die Grafikkarte zu schicken, nur um ab und an eins der Einzelbilder vor der Skalierung abgreifen zu können, um es irgendwohin anders zu schicken. So ungefähr dürften die CPU-intensivsten Lösungen vorgehen, die du getestet hast.
Die beste Lösung hingegen ist, den Vorschau-Stream komplett im Kernel-Kontext zu lassen, wo er per DMA direkt vom Capturegerät zur Graka geschaufelt werden kann und die Skalierung und das "Einstanzen" an einer Stelle des Bidschirms der GPU der Grafikkarte zu überlassen. Für das Abgreifen von Einzelbildern würde man einen zweiten Stream im Kernel-Kontext schaffen, der ausschließlich die gewünschten Einzelbilder (;also z.B. aller 5 Minuten eins) in den RAM (;und den Kontext der Anwendung) transferiert wo es dann weiterverarbeitet werden kann. So ungefähr werden die am wenigstens CPU-intensiven Anwendungen vorgehen, die du getestet hast.
Zwischen diesen beiden Extremen sind etliche Abstufungen möglich.
Antwort von Anselm Rapp:
Heiko Nocon schrieb:
>> Ich kapiere nicht, warum >> manche die CPU fast gar nicht und manche so beträchtlich beanspruchen, >> wenn ich doch nur alle fünf Minuten eine Aufnahme per FTP sende. > > Die dümmste Lösung ist, sämtliche Einzelbilder vom Capturegerät in den > RAM (;und den Kontext der Anwendung) zu holen, sie dort mit der CPU zu > skalieren und das Ergebnis aus dem RAM (;und dem Kontext der Anwendung) > wieder an die Grafikkarte zu schicken, nur um ab und an eins der > Einzelbilder vor der Skalierung abgreifen zu können, um es irgendwohin > anders zu schicken. So ungefähr dürften die CPU-intensivsten Lösungen > vorgehen, die du getestet hast.
So wird es wohl sein. Blöde, dass das Drumherum am besten programmiert ist.
> Die beste Lösung hingegen ist, den Vorschau-Stream komplett im > Kernel-Kontext zu lassen, wo er per DMA direkt vom Capturegerät zur > Graka geschaufelt werden kann und die Skalierung und das "Einstanzen" an > einer Stelle des Bidschirms der GPU der Grafikkarte zu überlassen. Für > das Abgreifen von Einzelbildern würde man einen zweiten Stream im > Kernel-Kontext schaffen, der ausschließlich die gewünschten Einzelbilder > (;also z.B. aller 5 Minuten eins) in den RAM (;und den Kontext der > Anwendung) transferiert wo es dann weiterverarbeitet werden kann. So > ungefähr werden die am wenigstens CPU-intensiven Anwendungen vorgehen, > die du getestet hast. > > Zwischen diesen beiden Extremen sind etliche Abstufungen möglich.
Da fällt die Entscheidung schwer. Aber danke für die Aufklärung.
Gruß, Anselm
-- Antworten bitte in der Newsgroup.
==> *Die* Empfehlung fuer Webmaster: www.rettet-das-internet.de <==
Antwort von Andreas Erber:
Anselm Rapp wrote:
> > Ich wäre dankbar, wenn mich jemand schlau machen könnte.
Das warum weißt du nun ja schon, das wie umgeht man das kann man so machen:
Man nimmt eine normale Pal Cam(;corder) / Dicigam, die Pal ausgibt, gehst mit Composite/Svideo/RGB auf den Eingang einer Grafikarte oder TV Karte die einen solchen Eingang bereitstellt und benutzt irgendeine Webcamsoftware die mit den Windows Capture Treibern Kompatibel ist. Dann hast du 0 CPU Auslastung bei der Vorschau und nur ein bisserl eine wenn das Bild hochgeladen wird.
LG Andy
Antwort von Anselm Rapp:
Andreas Erber schrieb:
>> Ich wäre dankbar, wenn mich jemand schlau machen könnte. > > Das warum weißt du nun ja schon, das wie umgeht man das kann man so machen: > > Man nimmt eine normale Pal Cam(;corder) / Dicigam, die Pal ausgibt, gehst mit > Composite/Svideo/RGB auf den Eingang einer Grafikarte oder TV Karte die > einen solchen Eingang bereitstellt und benutzt irgendeine Webcamsoftware die > mit den Windows Capture Treibern Kompatibel ist. Dann hast du 0 CPU > Auslastung bei der Vorschau und nur ein bisserl eine wenn das Bild > hochgeladen wird.
Das wäre natürlich technisch *die* Lösung. Allerdings habe ich meine Webcam zu einem Spottpreis bekommen, sonst hätte ich gar keine. Der Ausblick aus meinem Fenster ist so spannend auch wieder nicht, aber wenigstens wissen meine etwas entfernt wohnenden Kinder, wie das Wetter bei uns ist. :-)
Hier www.pcwelt.de/forum/windows-nt-2000/98906-prozess-prioritaet-festlegen.html hat jemand beschrieben, wie man Prozessen eine Priorität zuweisen kann, womit mir schon geholfen wäre. Aber wie das Programm in einer Datei, die "z. B." prior.cmd heißt, seine Priorität auslesen soll, ist mir schleierhaft. Ich habe XP Home, aber das dürfte nicht der Grund sein, warum es (;auch) bei mir nicht funktioniert.
Danke jedenfalls,
Anselm
-- Antworten bitte in der Newsgroup.
==> *Die* Empfehlung fuer Webmaster: www.rettet-das-internet.de <==
Antwort von Andreas Erber:
Anselm Rapp wrote:
> > Das wäre natürlich technisch *die* Lösung. Allerdings habe ich meine > Webcam zu einem Spottpreis bekommen, sonst hätte ich gar keine. Der > Ausblick aus meinem Fenster ist so spannend auch wieder nicht, aber > wenigstens wissen meine etwas entfernt wohnenden Kinder, wie das > Wetter bei uns ist. :-)
Ahja alte TV Karten und Camcorder mit defektem Kasettenlaufwerk etc, gibts vielleicht auch Spottbillig bei Ebay, keine Ahnung ;-) Besser als der Bild von so einer Webcam wird das Bild damit allerdings bestimmt!
LG Andy
Antwort von Günter Hackel:
Andreas Erber schrieb:
> Ahja alte TV Karten und Camcorder mit defektem Kasettenlaufwerk etc, gibts > vielleicht auch Spottbillig bei Ebay, keine Ahnung ;-) > Besser als der Bild von so einer Webcam wird das Bild damit allerdings > bestimmt!
Du kennst Webcams nur aus dem letzten Jahrtausend und Camcorder auch nur theoretisch. gh
| |
| |