Zum Inhalt springen

[C#] Bilderkomprimierung


Gateway_man

Empfohlene Beiträge

Hi,

Zur Erläuterungen:

Ich habe ein Server/Client Projekt am laufen, das es mir ermöglicht externe Maschinen zu verwalten und zu steuern.

Ich bin gerade an einem Modul dran, das es mir ermöglicht eine RPD Session zu starten.

Das ganze läuft momentan auch recht vielversprechend, solange der Upload der Remote Maschine entsprechend gut ist.

Die Images die verschickt werden, sind momentan einfach noch zu groß.

Bei einer Auflösung von 1280x1024 geht alles noch recht fix.

Die Probleme fangen bei FullHD Auflösungen an.

Das Format in dem die Bilder versendet werden ist Jpeg.

Kennt einer von euch einen guten Algorithmus speziell für Bilder der hier angewendet werden kann?

Wichtig ist das es zum einen komprimierbar und dekomprimierbar sowie schnell sein soll.

Ich habe es bereits mit LZMA getestet, allerdings werden die Bilder größer statt kleiner :( und die Implementation war unzureichend, da die komprimierung mehrere Sekunden benötigte.

Wenn ich die Serveranwendung auf meinem angemieteten Server laufen lasse komme ich auf traumhafte 15-20 frames pro Sekunde.

Wenn ich den Server bei mir laufen habe und ein Kollege die Client Anwendung startet sagt er alle 2 Sekunden wechselt das Bild.

Schon ein enormer unterschied.

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist die Frage erlaubt, warum du das Rad neu erfindest und nicht auf eine der vielen existierenden Fernwartungslösungen zurückgreifst?

Zum Problem:

JPEG-Dateien sind bereits komprimiert. Zweimal komprimieren bringt nichts.

Du kannst die Komprimierung bei JPEG hochdrehen, aber dann verstärken sich auch die Artefakte.

Ein Ansatz ist, nur den Teil des Bildschirminhalt zu übertragen, der sich verändert hat. Das erfordert allerdings entweder eine Analyse des Inhalts, für die du vermutlich keine Zeit hast, oder das Einklinken in das Grafik-Subsystem des verwalteten Systems, um Informationen darüber abzufangen, was sich geändert hat.

Mit dem Verschicken von Screenshots ist es jedenfalls nicht getan.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist die Frage erlaubt, warum du das Rad neu erfindest und nicht auf eine der vielen existierenden Fernwartungslösungen zurückgreifst?

Natürlich :).

Vorab das ganze ist ein rein privates Projekt und wurde nicht in Auftrag gegeben.

Der Grund warum ich das ganze selbst implementiere ist sehr einfach. Ich habe im .Net noch keine brauchbare Library hierfür gefunden.

Zudem sind die richtig guten Programme dieser Art für kommerziellen gebrauch kostenpflichtig (siehe teamviewer und die verlangen richtig Asche).

Natürlich gibt es UrltraVnc und konsorten, allerdings können die niemals mit der Qualität von Teamviewer mithalten.

Nicht zuletzt interessiert mich das Thema selbst :).

Ein Ansatz ist, nur den Teil des Bildschirminhalt zu übertragen, der sich verändert hat. Das erfordert allerdings entweder eine Analyse des Inhalts, für die du vermutlich keine Zeit hast, oder das Einklinken in das Grafik-Subsystem des verwalteten Systems, um Informationen darüber abzufangen, was sich geändert hat.

Das ist eine hervorragende Idee. Ich werd mir mal überlegen wie ich das am besten umsetzten könnte.

Mit dem Verschicken von Screenshots ist es jedenfalls nicht getan.

Naja wie gesagt, wenn der Absender einen guten Upload hat siehts echt klasse aus.

Ich hab zwischenzeitlich noch ein paar frames rausgeschlagen indem ich die Farbpalette geändert habe.

Soll heißen:

Bei High Qualität 32bit, bei Medium Qualität 16bit und bei Low Qualität 8bit.

Ist natürlich nicht das optimalste, aber eine vorrübergehende Lösung.

lg

Gateway

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...