Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Welchen Videocodec zur Komrimierung eines Webcam-Livestreams (https://www.delphipraxis.net/109834-welchen-videocodec-zur-komrimierung-eines-webcam-livestreams.html)

Chrissi91 8. Mär 2008 16:46


Welchen Videocodec zur Komrimierung eines Webcam-Livestreams
 
Ich bin auf der Suche nach Komprimierungsalogrithmen für einen Livestream von einer Webcam, der aus JPG-Bilder besteht. Es soll am anderen Ende schon ein laggfreies Video ankommen, sprich mehr als 3-4 Bilder. MSN & Co schaffen das ja auch. :)

Könnt ihr was empfehlen? Mir ist es relativ egal, ob es was kostet oder nicht. Kostenlos ist natürlich immer besser, aber wenn gute Komprimierungen halt was kosten, komm ich nicht drumrum. ;)

TurboMartin 8. Mär 2008 17:03

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
MPEG komprimiert sehr gut, nur ist beispielsweise im WMP nicht unbedingt standardmäßig ein Codec drinnen (wie bei mir). Ansonsten Microsofts Windows Media Codec.

[eidt]Grad noch was gefunden: das hier![/edit]

Elvis 8. Mär 2008 17:13

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von TurboMartin
MPEG komprimiert sehr gut, nur ist beispielsweise im WMP nicht unbedingt standardmäßig ein Codec drinnen (wie bei mir). Ansonsten Microsofts Windows Media Codec.

MPEG? :shock:
MPEG komprimiert absolut abscheulich! Die Dateien werden riesig, verglichen mit anderen Formaten, und die Artefakte sind nicht mehr feierlich...
Interessanter wäre es sich auf die Suche nach einer Möglichkeit zu begeben entweder h.264 (Qualität) oder Flash(Größe) schreiben zu können.
DXPack + XVid Codec kann aber auch schon interessant sein.
MPEG ist ganz graues Mittelalter. Eines der ersten verlustbehafteten differenziellen Formate hat heutzutage keine Anwendung mehr. Ist einfach zu schlecht.

1234588 8. Mär 2008 17:41

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von TurboMartin
MPEG komprimiert sehr gut

seit wann wird bei MPEG was kopmprimiert?

TurboMartin 8. Mär 2008 18:41

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Also bei mir werden MPEG-Filme kleiner als mit Windows Media. :shock: Außerdem wird MPEG bei DVDs verwendet
h.264 kann kaum einer abspielen (kostenlos). Durch zufall hab ich da einen Codec mal gefunden, der allerdings alle anderen lahmlegte.
Insgesamt kommt es auf den Verwendungszweck an.

Elvis 8. Mär 2008 19:22

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von TurboMartin
Also bei mir werden MPEG-Filme kleiner als mit Windows Media. :shock: Außerdem wird MPEG bei DVDs verwendet

Dann meinst du MPEG2, ebenfalls furchtbar, aber viel besser als MPEG.
Wie auch immer, ein komplett anderes Format. (Genau wie MPEG4 wieder etwas GANZ anderes ist)
Zitat:

h.264 kann kaum einer abspielen (kostenlos). Durch zufall hab ich da einen Codec mal gefunden, der allerdings alle anderen lahmlegte.
QuickTime benutzt h.264 standardmäßig als Format für Video.
Ich habe schon lange keine Videos auf einem Windows system angeschaut, aber ich würde hier einen Fallback auf den QuickTime Codec für h.264 erwarten.
MSFT hat da wirklich noch nix für h.264 was autom. geladen wird? :shock:

Auf Linux gibt es garantiert einen dedizierten h.264 und auf OS X gibt ist das von Haus aus drin.
Zitat:

Insgesamt kommt es auf den Verwendungszweck an.
Ja sicher. Aber MPEG1 & 2 heutzutage zu benutzen ist einfach Blödsinn, IMO.
DVDs werden nur damit ausgeliefert, weil es das einzige Format ist, dass garantiert von einem DVD Player gelesen werden kann. Nicht weil es gut ist.
Die einfache Lösung wäre XVid + DXPack. Dadurch sollte er den Stream der Cam direkt durch den XVid Filter auf die Platte ausgeben können.

TurboMartin 9. Mär 2008 08:59

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von Elvis
Zitat:

h.264 kann kaum einer abspielen (kostenlos). Durch zufall hab ich da einen Codec mal gefunden, der allerdings alle anderen lahmlegte.
QuickTime benutzt h.264 standardmäßig als Format für Video.
Ich habe schon lange keine Videos auf einem Windows system angeschaut, aber ich würde hier einen Fallback auf den QuickTime Codec für h.264 erwarten.
MSFT hat da wirklich noch nix für h.264 was autom. geladen wird? :shock:

Auf Linux gibt es garantiert einen dedizierten h.264 und auf OS X gibt ist das von Haus aus drin.

Für Windows habe ich mir den irgendwo aus dem Netz ziehen müssen, um die HQ-Filme von OnlineTVRecorder ansehen zu können. Dabei hab ich auch Qucktime ausprobiert - und es kam "Fehler D". Danach ist Quicktime im Speicher verreckt.

Medium 10. Mär 2008 01:52

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
@Elvis: Die wesentlichen Unterschiede bei MPEG und z.B. XVid oder DivX sind die verwendeten Algos zur Erzeugung der Vektordaten, z.B. Featurepoint-Detection. Die grundlegende Technik ist bis hin zu h.264 die gleiche: Rechne Bilde ins YCC Format um, komprimiere Keyframes als jpeg, erzeuge zwischen Keyframes Halbbilder und Verschiebungsinformationen, die den originalen Verlauf möglichst gut abbilden. Und nur letzteres ist am Ende das, was von MPEG1 bis heute verbessert wurde - aber konzeptionell sind sie nahezu identisch.

Eigentlich schreib ich das ganze nur, weil mir nicht ganz passte, wie vehement du auf "veraltet" und "schlecht" herumreitest ;).

@TurboMartin: Ein Codec allein reicht nicht aus um diesen Vergleich so anzustellen. Die resultierende Größe und Qualität hängen von folgenden Faktoren ab:
- Generelle Arbeitsweise des Codecs
- Inhalt des Videos
- Gewählte Datenrate, und ob und wie oft diese überhaupt erreicht wird
- Auflösung und Qualität des Originals
- Alles obere genau so für die Tonspur(en)
- Bei MPEG-basierten Codecs: GOP-Struktur (könnte man zu 1. zählen, ist aber z.T. wählbar)

Nur weil du mit einem Codec mal größere Dateien hattest als mit dem anderen, ist dadurch noch lange keine qualifizierte Aussage getroffen. Um eine solche zu erhalten müsste man wiefolgt vorgehen:
- Ein Originalvideo sehr hoher Qualität wählen, ohne Tonspuren
- Dieses Video mit den zu vergleichenden Codecs encoden
- Prozentuale Bilddifferenz zum Originalvideo bilden
- Wenn einstellungen gefunden sind, bei denen beide Codecs die gleiche Differenz aufweisen, DANN Dateigrößen vergleichen
- Die Selbe Prozedur für verscheidene Differenzniveaus durchführen, und einen am besten grafischen Vergleich machen
- Dann Aussage darüber treffen, ob und wann ein Codec vergleichsweise große Dateien erzeugt.

Der Codec, der für die höchste Qualität die kleinste Datei erzeugt hat, ist - solange es noch klein genug ist - der beste Codec für dieses eine Video! Für eine generelle Aussage müsste man nun noch mit einer Vielzahl verschiedener Videos drangehen.

\\Edit: Achja. Die prozentuale Differenz trifft natürlich keine Aussage darüber, ob ein Mensch subjektiv die gleiche Qualität wahrnimmt. Ein Codec der die Farben evtl. etwas stärker verfremdet, dafür aber schärfer ist als der zweite, der die Farben nah am Original lässt, kann u.U. als qualitativer wahrgenommen werden, oder auch umgekehrt. Je nach Anwendungszweck, Erwartung und Inhalten.

Sicherlich werden neuere Codecs im Mittel besser abschneiden als brand aktuelle, aber wie oben schon erkennbar ist muss man weiterhin die Verfügbarkeit und u.U. rechtliche Punkte auch mit in Erwägung ziehen. Und ich glaube erstmal nicht, dass "alte und schlechte" Codecs sooo sehr weit von ganz aktuellen entfernt sind, so dass sie für vergleichsweise einfache Aufgaben dank ihrer hohen Verbreitung und einfachen Verarbeitung keine Verwendungsberechtigung mehr hätten.

hathor 10. Mär 2008 07:37

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Wenn Du schon als Ausgangsmaterial JPG hast, brauchst Du doch keine zusätzliche Kompression mehr.

http://www.steffelsoft.de/jpg2avi/

Medium 10. Mär 2008 09:19

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Und du glaubst, jpeg2avi schreibt einfach die Bilder hintereinander in eine Datei, und verwendet keinen Codec? Das wäre fast der Fall, wenn das Programm nach mJPEG codiert, aber selbst da wird rekomprimiert. Und hier muss selbst ich zugeben: Das wäre extrem veraltet und mit ziemlicher Sicherheit weit entfernt von einem guten Qualitäts/Größen-Verhlätnis.

hathor 10. Mär 2008 10:41

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
http://de.wikipedia.org/wiki/JPEG

Zitat:
Die Bewegtbildkompressionsverfahren MPEG-1 und MPEG-2 bauen auf dem JPEG-Standard auf.

hathor 10. Mär 2008 10:45

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
An die DELPHI-PRAXIS-Macher:

Ihr solltet Eure FeldTelefonLeitung wirklich mal überarbeiten - sprich DURCHPUTZEN!

Warum dauert der Upload immer eine halbe Ewigkeit???

Medium 10. Mär 2008 10:53

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von hathor
http://de.wikipedia.org/wiki/JPEG

Zitat:
Die Bewegtbildkompressionsverfahren MPEG-1 und MPEG-2 bauen auf dem JPEG-Standard auf.

Auf etwas aufbauen <> genau das sein

Auf den Zusammenhang ging ich auch bereits in meinem ersten Beitrag dieses Threads ein.

hathor 10. Mär 2008 11:08

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat von http://www.steffelsoft.de/jpg2avi/jpe2avi_faq.htm

5. Was ist ein Videokomprimierungfilter und welchen setzte ich am Besten ein ?

Videokomprimierungsfilter, auch "Codec" genannt, reduzieren die Datenmenge der Videos durch verlustbehaftete Kompression. Die entstehenden AVI Dateien werden damit kleiner. Standardmäßig verwendet Jpg2Avi den MJPEG codec der mit DirectX8 installiert wird.

Noch besser ist allerdings der MPEG4 Codec DivX von DivX. http://www.divx.com. Diesen Codec kann man von dort kostenlos downloaden und installieren. Dann erscheint er in Jpeg2Avi im Auswahldialog der Videokompressoren. Die AVI Dateien werden damit 50-fach und mehr kleiner als ohne Kompression. (AVI Datei aus 1000 Einzelbildern a 320x240 ca. 3MB). Damit ist die Kompressionsrate nochmals 5x besser als mit dem MJPEG Codec.
Zitatende.

Letztendlich hängt es von der Geschwindigkeit ab, mit der die Bilder von der Webcam eintrudeln.
Ich habe eine Webcam, die die Bilder schon im MPEG4-Format auf die Reise schickt.

Medium 10. Mär 2008 11:14

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Tatsächlich mJPEG :shock:. Dann doch lieber VirtualDub und Codec selber wählen, oder mit DSPack in Delphi.

Aber deine Infos sagen dem TE nicht, welches jetzt das für ihn geeignete ist.

Zitat:

(AVI Datei aus 1000 Einzelbildern a 320x240 ca. 3MB). Damit ist die Kompressionsrate nochmals 5x besser als mit dem MJPEG Codec.
Auch der Autor dieses Tools sollte sich mal mit der Vergleichbarkeit bei Videocodecs beschäftigen. Ist ja geradezu ein Verbrechen, dass so in der Form mit konkreten Zahlen unkommentiert hinzuschreiben.

\\Edit:
Zitat:

Letztendlich hängt es von der Geschwindigkeit ab, mit der die Bilder von der Webcam eintrudeln.
Ich habe eine Webcam, die die Bilder schon im MPEG4-Format auf die Reise schickt.
Einzelne Bilder werden nicht im MPEG4 Format verschickt, weil es bei MPEG4 bis auf die Keyframes keine einzelnen Bilder mehr gibt. Deine Cam erzeugt einen Stream. Dass die Bildrate sich in der Dateigröße niederschlägt sollte klar sein. Die Originalbildrate ist bei Liveübertragung via Internet aber wohl kaum selbst der Flaschenhals.

hathor 10. Mär 2008 11:28

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
@Medium:

Bist Du ein Erbsenzähler!
Wenn Du 60 Bilder/sec auf einem LCD-Monitor siehst, sprichst Du auch von Bilder...

Medium 10. Mär 2008 11:36

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Um qualifiziert Antworten zu können, ist ein gewisses Maß an "Erbsenzählertum" sicher nicht falsch, wie generell beim Programmieren auch. Computer sind nämlich die schlimmsten dieser Art. Man sollte sich schon ein wenig mit der Materie über die man spricht beschäftigen, bevor man Empfehlungen auf Grund ungeprüfter Aussagen Dritter ausspricht.

DataCool 16. Mär 2008 16:51

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Hi,

wenn mit Mpeg4 gestreamt wird(also Stream direkt zum Server hochgeladen wird),
und mehrere User diesen Stream betrachten sollen/wollen,
Wie kann dann realisiert werden das neue "Zuschauer" jederzeit in den Stream einsteigen können ?!
Oder bringt das Format diese Möglichkeit direkt mit ?(Es sind ja keine Einzelbilder mehr)

Greetz Data

Sascha L 16. Mär 2008 17:11

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Ich muss Elvis vehement widersprechen!

MPEG2 soll schlecht sein? Warum haben dann aktuelle DVDs (Blockbuster) so eine gute Bildqualität? Wieso hat das digitale Fernsehen (ARD, ZDF, ... Außnahmen: 9Live, etc.) so eine gute Qualität?

Selbst HDTV kann man sehr gut mit MPEG2 kodieren. Bevor H.264 eingesetzt wurde, hatte man HDTV noch in MPEG2 übertragen! z.B. die AstraHD-Demo-Kanäle waren bis vor einiger Zeit noch in MPEG2, bzw. wenn ich mich nicht Irre, ist es immer noch MPEG2, da man sie immer noch mit den HDTV-Receivern der ersten Generation anschauen kann. Euro1080 startet auch in MPEG2.

MPEG2 hat nur einen Nachteil: Die Datenmenge ist riesig, weil die Kompression nicht so gut ist, aber die Bildqualität ist astrein!

Elvis 16. Mär 2008 18:06

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von Sascha L
MPEG2 hat nur einen Nachteil: Die Datenmenge ist riesig, weil die Kompression nicht so gut ist, aber die Bildqualität ist astrein!

Das Verhältnis von Qualität pro MB entscheidet ob ein Codec schlecht ist oder nicht.
Jeder aktuelle Codec ist darin wesentlich besser als MPEG2, also ist es schlecht. Punkt.
MPEG2 hat außerdem einen "extremen" Hang zu Artefakten (verglichen mit h.264, MP4 oder XVid bei ähnlicher Kompression).
Das kann man schön bei DVDs sehen, die durch dieses "Krisseln" niemals die eigentliche absolute Auflösung erreichen. Gerade Wasser oder Gras im Wind sieht damit furchtbar aus.
MP2 wird für DVDs genutzt, weil kein anderes Format garantiert abgespielt werden kann.

Wie gesagt: DSPack + XVid und gut ist das.
Von DivX würde ich die Finger lassen:
Du den Codec nicht mitverteilen und da eine Firma dahinter steht kann es immer Änderungen in den Lizenzen geben, die deine App funktionsunfähig machen (weil der Codec zukünftig nicht in der Kombi installiert werden könnte)

DataCool 16. Mär 2008 19:59

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
@Elvis:

Zitat:

DSPack + XVid und gut ist das
^^^Ok, dann hat man einen Stream den man zum Server schicken kann,
aber wie werden die Daten des Streams jetzt mehreren Usern mit
unterschiedlichen Einstiegspunkten und unterschiedlicher Software
(Browser oder Messenger(direkte Socket Verbindung zum Server))
zur Verfügung gestellt ?

Greetz Data

Elvis 17. Mär 2008 08:47

Re: Welchen Videocodec zur Komrimierung eines Webcam-Livestr
 
Zitat:

Zitat von DataCool
@Elvis:

Zitat:

DSPack + XVid und gut ist das
^^^Ok, dann hat man einen Stream den man zum Server schicken kann,
aber wie werden die Daten des Streams jetzt mehreren Usern mit
unterschiedlichen Einstiegspunkten und unterschiedlicher Software
(Browser oder Messenger(direkte Socket Verbindung zum Server))
zur Verfügung gestellt ?

Greetz Data

Da hast du mehrere Wege.
Du könntest diesen Stream als Input für den VLC nehmen und dort einen StreamCast starten. Du kannst die CAM vllt sogar selbst als Input wählen und alles selbstgebastelte umgehen.
Du kannst auch einfach darauf vertrauen, dass der User max. X kraditschte Bilder bekommt, bevor der nächste Keyframe erscheint.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz