Frage zu Codecs - was ist ein Codec?

cevaxn

Ensign
Registriert
Aug. 2017
Beiträge
209
Hallo Leute,
bin als stiller Leser hier schon länger angemeldet und möchte nun an dieser Stelle alle herzlich grüßen :)
Ich hatte mich mit dem Thema Videos, Komprimierung, Codec, H.265/HEVC usw. auseinandergesetzt, um es einfach mal zu verstehen.
Mich verwirrt dabei immer wieder ein Begriff, bei dem anscheinend jeder etwas anderes darunter versteht.
Ich hoffe ihr könnt mich aufklären:

Warum liest man überall, dass H.264/AVC oder H.265/HEVC angeblich "Codecs" seien?
Es sind doch nur "Standards, Normen, Verfahren, Algorithmen, wie auch immer.

Denn:
Ein Codec (Coder / Encoder) ist doch ein Gerät oder Computerprogramm, das Daten kodiert / enkodiert, nach bestimmten Regeln.
Die Regeln stehen in einem "Dokument/Regelwerk", z.B. die H.264-Spezifikation und der Codec implementiert/nutzt diese Regeln.

Es ist nach meinem Verständnis also eher so, dass ein Codec (z.B. der x.264) das H.264 oder H.265-Verfahren "anwendet"...oder?

Ein Codec ist also ein Werkzeug, das Daten verarbeitet/komprimiert, gemäß einer vorgegebenen Spezifikation.
Und somit ist für mich H.264 ein Verschlüsselungsverfahren, eine "Technik" usw., aber doch kein Codec?

Der Codec x.264 komprimiert ein unkomprimiertes Video, gemäß der H.264-Spezifikation zu einem komprimierten Video
Analogie: Der Mixer x.Schredder2000 zerkleinert rohe Früchte, gemäß der H.Schredder-Spezifikation(2000U/min) zu einem Smoothie.

Zu sagen, dass H.265 ein Codec sei, wäre so, als ob man sagen würde:
Das Zerkleinern ist ein Mixer... Das ergibt doch keinen Sinn?
Warum liest man überall also von einem angeblichen "HEVC-Codec" oder H.265-Codec?

Vielen Dank im vorraus :)
 
Der Codec ist die quasi die real gewordene Spezifikation. Es macht ja wenig Sinn in der Technik von einem Stück Papier zu reden (Spezifikation) als von dem Stück Software (Codec) selbst.
Jedes Gerät oder Software die mit h.264 umgehen kann, hat den h.264-Codec inne.
Ergänzung ()

cevaxn schrieb:
Ein Codec ist also ein Werkzeug, das Daten verarbeitet/komprimiert, gemäß einer vorgegebenen Spezifikation

Nein, ein Programm ist hier das Werkzeug, zb. Movie Maker, der Codec selbst macht ohne Programm welches ihn benutzt gar nichts.
 
cevaxn schrieb:
Der Codec x.264 komprimiert ein unkomprimiertes Video, gemäß der H.264-Spezifikation zu einem komprimierten Video

x264 ist kein Codec, sondern ein Encoder. H264 ist der Codec. Riesen Unterschied
 
  • Gefällt mir
Reaktionen: rudl
@Knito
Naja, ein Codec ist doch ein eigenständiges Programm, oder ein Werkzeug, auf das andere Programme zugreifen kann?
Auf meinem Rechner sind Codecs eigenständige EXE oder DLL-Dateien. (ffmpeg.exe, avcodec-lav-58.dll...)
Ein Codec komprimiert bzw. dekomprimiert Mediendateien wie Songs oder Videos. Windows Media Player und andere Apps verwenden Codecs, um Mediendateien wiederzugeben und zu erstellen.

Ein Codec kann aus zwei Teilen bestehen: einem Encoder, der die Mediendatei komprimiert (Codierung), und einem Decoder, der die Datei dekomprimiert (Decodieren). Einige Codecs enthalten beide Komponenten, andere Codecs nur eine.
https://support.microsoft.com/de-de...edia-player-codecs-frequently-asked-questions

thrawnx schrieb:
H264 ist der Codec
das stimmt auf keinen Fall. H.264 ist das Video-Format/Kompressionsverfahren, das von x264
implementiert/verwendet wird. Deine Aussage ist genau das, was mich bei meiner Recherche immer verwirrte und durcheinander gebracht hat :D
Ich habe langsam die Vermutung, dass die meisten User "Codec" mit "Video-Format" verwechseln.

Gemäßt Wikepedia:
A codec is a device or computer program for encoding or decoding a digital data stream or signal
H.264 ist weder ein "device", noch ein "computer program". Warum soll es also ein Codec sein? :)

libavcodec ist eine Codec-Sammlung.
Die libavcodec-Bibliothek kann derzeit mehr als 50 Videoformate, darunter H.264 (MPEG-4 AVC),..., sowie mehr als 30 Audioformate (MP3, Vorbis, AC3, AAC, WMA 1/2 und andere) lesen (decodieren) und viele davon auch schreiben (encodieren)
 
Zuletzt bearbeitet:
cevaxn schrieb:
Ein Codec ist also ein Werkzeug, das Daten verarbeitet/komprimiert, gemäß einer vorgegebenen Spezifikation.
Und somit ist für mich H.264 ein Verschlüsselungsverfahren, eine "Technik" usw., aber doch kein Codec?
Ja, das stimmt. H.264 ist an sich kein Codec, sondern ein Standard. Nach diesem Standard ist der Codec AVC implementiert. Es könnte theoretisch auch andere geben. Das ist bei H.264 zwar nicht der Fall (zumindest ist mir nichts bekannt) und deswegen wird H.264 und AVC oft synonym verwendet, aber bei H.263 gibt's z.B. DivX, Xvid und noch einige andere.
x264 ist ein Encoder, der AVC-Video-Streams erzeugt. Er ist aber nicht der einzige. Es gibt eine Vielzahl anderer Soft- und Hardware-Encoder.
 
  • Gefällt mir
Reaktionen: highks
Kurz zur Richtigstellung: h264 ist der offizielle codec der lizensiert werden muss und x264 ist die open-source Nachprogrammierung .... beides ist im Grunde das gleiche :=)

siehe Abschnitt Implementierungen: https://de.wikipedia.org/wiki/H.264

Das ist wir früher bei mp3 .... Frauenhofer codec vs. lame codec (offiziell vs. Nachprogrammiert)
 
cevaxn schrieb:
Ein Codec (Coder / Encoder) ist doch ein Gerät oder Computerprogramm, das Daten kodiert / enkodiert, nach bestimmten Regeln.
Coder = Encoder
Das Gegenteil ist der Decoder.
Coder sagt man eigentlich nicht, evtl. wegen der besseren Unterscheidung. Also Material wird erst Encoded und später Decoded.
Oder auf deutsch enkodiert und dekodiert.

Der Codec x.264 komprimiert ein unkomprimiertes Video, gemäß der H.264-Spezifikation zu einem komprimierten Video
x264 ist eine Open Source Encoder Software die H.264 codiertes Material ausspuckt.
 
Zuletzt bearbeitet:
Videostandards bzw. Videospezifikationen bzw. Verfahrensbeschreibungen:
H.264 (AVC), H.265 (HEVC), MPEG-4 (ASP), MPEG-2, VC-1, AV1 etc.
Hier wird beschrieben, wie das Encoden und Dekodieren zu erfolgen hat. Welche Techniken, Komprimierungen etc. genutzt werden.

Encoder:
x264, x265, ffmpeg, Handbrake, Vidcoder, API zu Intel QuickSync, NVenc etc.
Programme oder Schaltkreise (inkl. Programme zur Ansteuerung), die entsprechend der o.g. Spezifikationen Datenmaterial in einen Datenstream umwandeln und komprimieren.
Die Komprimierung ist die Hauptaufgabe einen Encoders, ansonsten könnte man tausende Einzelbilder auch hintereinander anfügen und abspielen (= riesige Datenmenge)

Hier gibt es eine Ungenauigkeit, da x264 als Beispiel ein Encoder ist, Handbrake, Vidcoder, ffmpeg - welche x264 als Library nutzen - aber auch.

Decoder:
ffdshow, Lavfilter, API zu Intel QuickSync etc.
Programme oder Schaltkreise (inkl. Programme zur Ansteuerung), die die vorgenannten Datenstreams wieder in Bildmaterial zurückverwandeln, welches angezeigt werden kann.

Wenn Abspielprogramme nicht auf externe Codecs zugreifen (siehe unten), haben sie meist einen Decoder bereits im Programmcode integriert und sind damit auch Decoder.
Ähnlich dem Vergleich Handbrake und x264 bei den Encodern

Codecs:
Encoder und Decoder als "Kombiprodukt"
z.B. ffdshow, lavfilter
Programme oder Schaltkreise (ink, Programme zur Ansteuerung), die beide Funktionen beherrschen: Encoding von Bildmaterial in komprimierte Datenstreams und auch Rückwandlung in Bildmaterial.
(gilt übrigens für Audio genauso, hier nicht weiter explizit erwähnt)

Es wird bei den Codecs meist versucht, diese transparent in ein Betriebssystem einzubinden, so dass andere Programme (Videoschnittprogramme, Abspielprogramme) darauf zugreifen können.
Durch die Nutzung externer Codecs werden die Bearbeitungs- und Abspielprogramme sehr viel flexibler.

Container:
OGG, MP4, MKV, MPEG-2-TS-Stream etc.
Standartisierte Fileformate, die z.B. Video- und/oder Audio-Streams mit Zusatzinformationen (Kapitel, Untertitel etc.) versehen und miteinander verbinden, damit nicht alles einzeln "rumliegt".
(selbst eine ZIP-Datei ist ein Container)

PS: Es handelt sich um eine vereinfachte Darstellung, die keinen Anspruch auf Vollständigkeit hat.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: h00bi
Auch wenn h.264 eigentlich der Standard ist, man verwendet den Namen eben synonym mit dem Codec, der für diesen Standard entwickelt wurde.

Analog dazu sagt man ja auch, dass man Daten "mit AES verschlüsselt" obwohl AES eigentlich nicht der Algorithmus ist, sondern der Standard. Der Algorithmus, der in AES verwendet wird, heißt eigentlich "Rijndael", aber keiner verwendet normalerweise die Bezeichnung, sondern man sagt einfach "AES"
 
Das ist ja das Problem bei uns Menschen...
wir "vereinfachen" uns gewisse Aussagen, dies wird zur Gewohnheit,
und am Ende sind feste Begriffe dermaßen verwässert, dass dann wiederum keiner weiß,
worüber man sich gerade eigentlich unterhält.
 
d2boxSteve schrieb:
Frauenhofer codec vs. lame codec (offiziell vs. Nachprogrammiert)
ja, ob Frauenhofer Codec, oder LAME Codec. Das sind beides Programme, die, sowie ich es verstanden habe, das Verfahren namens "MPEG-2 Audio Layer III" verwenden, implementieren.
"MP3, oder "MPEG-2 Audio Layer III" ist aber KEIN Codec.

Wishbringer schrieb:
Videostandards bzw. Videospezifikationen bzw. Verfahrensbeschreibungen:
H.264 (AVC), H.265 (HEVC), MPEG-4 (ASP), MPEG-2, VC-1, AV1 etc.

Codecs:
Encoder und Decoder als "Kombiprodukt"
z.B. ffdshow, lavfilter
Genauso habe ich es verstanden :) genau wie deine korrekte Bescheibung.
H.264 = Videostandard, z.B. ffdshow = Codec
Beides kann nicht gleichzeitig das gleiche sein, daher meine Verwirrung während der Recherche.

highks schrieb:
Analog dazu sagt man ja auch, dass man Daten "mit AES verschlüsselt"
genau das meine ich ja.
Zu sagen H.264 sei ein Codec, ist das gleiche zu sagen "AES ist ein Codec...."
Nein, der "Codec", Coder/Decoder ist Veracrypt, WinRAR, 7Zip usw. und AES die verwendete Methode.

Codec: WinRAR, Verfahren: AES
Codec: ffdshow, Verfahren: H.264
Übersetzer: Herr Müller, Übersetzverfahren: englische Sprache.
Wenn H.264 ein Codec ist, dann ist die englische Sprache ein Übersetzer...???

Würdet ihr es nicht komisch finden, wenn jeder von einem "twofish-Codec", "blowfish-codec", "serpent-Codec", "AES-Codec" reden würde? ^^
 
Zuletzt bearbeitet:
Zurück
Oben