- add erklaerung css class and 6 explanation slides to 01-grundlagen-text-audio.md - add erklaerung css class and 9 explanation slides to 02-bild-audio-video.md - add erklaerung css class and 2 explanation slides to 03-speichermedien-schnittstellen.md - regenerate klausurfolien.md with updated content
1580 lines
38 KiB
Markdown
1580 lines
38 KiB
Markdown
---
|
||
marp: true
|
||
theme: gaia
|
||
paginate: true
|
||
backgroundColor: #fff
|
||
header: "Dateiformate, Schnittstellen, Speichermedien & Distributionswege (223015b)"
|
||
footer: "Michael Czechowski – HdM Stuttgart"
|
||
title: Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
||
---
|
||
|
||
<style>
|
||
:root {
|
||
--color-foreground: #1a1a2e;
|
||
--color-highlight: #1e5f8a;
|
||
--color-dimmed: #4a4a6a;
|
||
}
|
||
section.invert {
|
||
--color-foreground: #fff;
|
||
}
|
||
section {
|
||
font-size: 1.7rem;
|
||
}
|
||
h1 {
|
||
color: #1e5f8a;
|
||
}
|
||
section.invert h1 {
|
||
color: #fff;
|
||
}
|
||
h2 {
|
||
color: #1f2937;
|
||
}
|
||
pre {
|
||
background: #0f0f23;
|
||
color: #5fb3e4;
|
||
border-radius: 8px;
|
||
border-left: 3px solid #1e5f8a;
|
||
}
|
||
pre code {
|
||
background: transparent;
|
||
color: inherit;
|
||
}
|
||
code {
|
||
background: #1a1a2e;
|
||
color: #5fb3e4;
|
||
padding: 0.15em 0.4em;
|
||
border-radius: 4px;
|
||
}
|
||
a {
|
||
color: var(--color-highlight);
|
||
}
|
||
section.klausur {
|
||
background: repeating-linear-gradient(
|
||
135deg,
|
||
#e3f2fd,
|
||
#e3f2fd 40px,
|
||
#fff 40px,
|
||
#fff 80px
|
||
) !important;
|
||
}
|
||
@media print {
|
||
section.klausur {
|
||
background: #e3f2fd !important;
|
||
}
|
||
}
|
||
section.aufgabe {
|
||
background: #e3f2fd !important;
|
||
}
|
||
section.aufgabe footer {
|
||
display: none;
|
||
}
|
||
section.erklaerung {
|
||
font-size: 1.1rem;
|
||
background: linear-gradient(180deg, #f8fbff 0%, #e8f4fc 100%) !important;
|
||
border-left: 6px solid #1e5f8a;
|
||
}
|
||
section.erklaerung h1 {
|
||
font-size: 1.6rem;
|
||
color: #1e5f8a;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
section.erklaerung h2 {
|
||
font-size: 1.3rem;
|
||
color: #1f2937;
|
||
margin-top: 0;
|
||
}
|
||
section.erklaerung ul,
|
||
section.erklaerung ol {
|
||
font-size: 1.0rem;
|
||
line-height: 1.4;
|
||
}
|
||
section.erklaerung p {
|
||
font-size: 1.05rem;
|
||
line-height: 1.5;
|
||
}
|
||
section.erklaerung table {
|
||
font-size: 0.95rem;
|
||
}
|
||
</style>
|
||
|
||
<!-- _class: invert -->
|
||
<!-- _header: '' -->
|
||
<!-- _backgroundColor: #000 -->
|
||
|
||

|
||
|
||
# Dateiformate, Schnittstellen, Speichermedien & Distributionswege
|
||
|
||
**223015b** · Modul "Technik 1" · 1. Semester
|
||
Digital- und Medienwirtschaft
|
||
Hochschule der Medien Stuttgart
|
||
|
||
[https://librete.ch/hdm/223015b/](https://librete.ch/hdm/223015b/)
|
||
|
||
<!--
|
||
- Willkommen, kurze Vorstellung
|
||
- Heute: Teil 2 – Bilder und Video
|
||
- Ziel: Verstehen, WARUM Formate so funktionieren, nicht nur WAS sie tun
|
||
- Frage zum Einstieg: "Wer hat schon mal ein Bild für Instagram hochgeladen und sich gewundert, warum es danach schlechter aussieht?"
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- QR-Code scannen für Folien-Link
|
||
- Folien sind CC BY-SA lizenziert – dürft ihr nutzen und teilen
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Teil 2: Bild- & Videoformate
|
||
|
||
<!--
|
||
- Drei große Blöcke heute:
|
||
1. Digitale Bilder (Raster vs. Vektor)
|
||
2. JPEG im Detail (die Magie der Kompression)
|
||
3. Video (warum es nochmal komplizierter ist)
|
||
- Interaktive Demos zwischendurch
|
||
-->
|
||
|
||
---
|
||
|
||
# Warum verschiedene Dateiformate?
|
||
|
||
**Ein Dateiformat definiert:**
|
||
- Ob und wie Daten komprimiert werden
|
||
- Welche Metadaten enthalten sind
|
||
- Wie Daten *codiert* und *decodiert* werden (*Co·dec*)
|
||
|
||
| Ziel | Bild | Audio | Dokument |
|
||
|------|------|-------|----------|
|
||
| Kleine Dateien | JPEG | MP3 | — |
|
||
| Perfekte Qualität | PNG, RAW | FLAC | PDF |
|
||
| Animation/Video | GIF | — | — |
|
||
| Skalierbarkeit | SVG | — | PDF |
|
||
|
||
<!--
|
||
- Kernfrage: Warum nicht EIN Format für alles?
|
||
- Antwort: Jedes Format ist ein Kompromiss
|
||
- Frage an Studierende: "Was wäre wichtiger – kleine Datei oder perfekte Qualität?" → Kommt drauf an!
|
||
- Analogie: Werkzeugkasten – Hammer für Nägel, Schraubenzieher für Schrauben
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Links: Original (hochauflösend)
|
||
- Rechts: Stark komprimiert
|
||
- Frage: "Wer sieht die Unterschiede?"
|
||
- Auf Blockartefakte und Unschärfe hinweisen
|
||
- Das ist der Preis für kleine Dateien
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Digitale Bilder
|
||
## Raster- und Vektorgrafiken
|
||
|
||
<!--
|
||
- Zwei fundamental verschiedene Ansätze
|
||
- Raster: "Malen nach Zahlen" – jeder Punkt einzeln
|
||
- Vektor: "Bauanleitung" – Formen beschreiben
|
||
-->
|
||
|
||
---
|
||
|
||
# Was ist ein digitales Bild?
|
||
|
||
Ein digitales Bild ist ein Raster aus Farbpunkten (Pixel).
|
||
Jeder Pixel speichert einen RGB-Farbwert (3 Bytes).
|
||
|
||
**Beispiel: Full HD (1920×1080)**
|
||
= 2.073.600 Pixel × 3 Bytes = **6,2 MB**
|
||
|
||
<!--
|
||
- Pixel = Picture Element
|
||
- RGB = Rot, Grün, Blau (je 0-255)
|
||
- Rechenbeispiel gemeinsam durchgehen
|
||
- Frage: "Wie viele Fotos passen auf ein 64GB Smartphone?" → ca. 10.000 unkomprimiert
|
||
- Pointe: Ohne Kompression wäre Smartphone-Fotografie unmöglich
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# Rastergrafiken
|
||
|
||
**Aufbau:** Liste von Pixeln mit Farbwerten (2D-Array)
|
||
|
||
**Speicherbedarf (unkomprimiert):**
|
||
Breite × Höhe × Farbtiefe (in Bytes)
|
||
|
||
**Beispiele:** JPEG, PNG, WebP
|
||
|
||
| Bits (Farbtiefe) | Farben | Anwendung |
|
||
|-----:|-------:|-----------|
|
||
| 1 | 2 | Schwarz/Weiß (Fax) |
|
||
| 8 | 256 | Graustufen, GIF |
|
||
| 24 | 16,7 Mio. | True Color (Standard) |
|
||
| 32 | 16,7 Mio. + Alpha | Transparenz |
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Formel: Breite × Höhe × (Farbtiefe / 8) = Bytes
|
||
- Beispielrechnung: 1920 × 1080 × 3 = 6.220.800 Bytes ≈ 6,2 MB
|
||
- Farbtiefe: 2^n Farben bei n Bit
|
||
- 24 Bit = 8 Bit pro Kanal (R, G, B)
|
||
- 32 Bit = 24 Bit + 8 Bit Alpha (Transparenz)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Rastergrafiken: Erklaerung
|
||
|
||
**Definition:** Bilder als zweidimensionales Raster (Array) von Pixeln mit Farbwerten.
|
||
|
||
**Speicherberechnung (unkomprimiert):**
|
||
```
|
||
Breite × Hoehe × (Farbtiefe ÷ 8) = Bytes
|
||
```
|
||
|
||
**Beispiel:** 1920×1080 bei 24 Bit
|
||
- 1920 × 1080 × 3 = 6.220.800 Bytes ≈ **6,2 MB**
|
||
|
||
| Farbtiefe | Farben | Anwendung |
|
||
|-----------|--------|-----------|
|
||
| 1 Bit | 2 | S/W, Fax |
|
||
| 8 Bit | 256 | Graustufen, GIF |
|
||
| 24 Bit | 16,7 Mio | True Color (RGB) |
|
||
| 32 Bit | 16,7 Mio + Alpha | Transparenz |
|
||
|
||
**Merkhilfe:** "24 Bit = 3 Bytes = RGB" (8+8+8)
|
||
|
||
---
|
||
|
||
# Das Problem der Skalierung
|
||
|
||
**Vergrößern:**
|
||
Fehlende Pixel müssen erfunden werden (Interpolation)
|
||
|
||
**Verkleinern:**
|
||
Pixel müssen zusammengefasst werden
|
||
|
||
**Interpolationsverfahren:**
|
||
- Nearest Neighbor: Schnell, pixelig
|
||
- Bilinear: Glättet, Standardverfahren
|
||
- Bicubic: Hohe Qualität, rechenintensiv
|
||
- Lanczos: Beste Qualität, mathematisch komplex
|
||
|
||
<!--
|
||
- Kernproblem: Rasterbilder haben EINE native Auflösung
|
||
- Alles darüber = Schätzung, Erfindung
|
||
- Demo-Idee: Bild in Photoshop/GIMP stark vergrößern
|
||
- Nearest Neighbor gut für Pixel-Art (soll pixelig bleiben)
|
||
- Frage: "Warum wird mein Profilbild manchmal unscharf?" → Plattform skaliert
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# Vektorgrafiken
|
||
|
||
**Speicherung als geometrische Primitive:**
|
||
- Pfade (Bézierkurven mit Kontrollpunkten)
|
||
- Grundformen (Rechteck, Ellipse, Polygon)
|
||
- Text (Glyphen als Outlines)
|
||
|
||
**SVG-Beispiel:**
|
||
```xml
|
||
<circle cx="50" cy="50" r="40" fill="#ff0000"/>
|
||
```
|
||
|
||
<small>SVG beschreibt WAS gezeichnet werden soll, nicht WIE jeder Pixel aussieht.</small>
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Vektor = Beschreibung (deklarativ)
|
||
- Raster = Pixel für Pixel (imperativ)
|
||
- Rendering-Pipeline: Vektordaten → Rasterisierung → Display
|
||
- Skalierung = Koordinaten multiplizieren → keine Information geht verloren
|
||
- SVG = Scalable Vector Graphics (Web-Standard)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Vektorgrafiken: Erklaerung
|
||
|
||
**Definition:** Bilder als mathematische Beschreibung geometrischer Formen (Pfade, Kurven, Formen).
|
||
|
||
| Eigenschaft | Raster | Vektor |
|
||
|-------------|--------|--------|
|
||
| Speicherung | Pixel-Array | Geometrie-Anweisungen |
|
||
| Skalierung | Qualitaetsverlust | Verlustfrei |
|
||
| Ideal fuer | Fotos | Logos, Icons |
|
||
| Formate | JPEG, PNG | SVG, PDF, AI |
|
||
|
||
**SVG-Beispiel:**
|
||
```xml
|
||
<circle cx="50" cy="50" r="40" fill="red"/>
|
||
```
|
||
→ Beschreibt WAS, nicht WIE (deklarativ)
|
||
|
||
**Konvertierung:**
|
||
- Vektor → Raster: Einfach (Rasterisierung)
|
||
- Raster → Vektor: Schwierig (Tracing)
|
||
|
||
---
|
||
|
||
# Raster- und Vektorgrafiken
|
||
|
||
| | Raster | Vektor |
|
||
|---|---|---|
|
||
| **Optimal für** | Fotos, komplexe Bilder | Logos, Icons, Illustrationen |
|
||
| **Skalierung** | Qualitätsverlust | Verlustfrei |
|
||
| **Dateigröße** | Abhängig von Auflösung | Abhängig von Komplexität |
|
||
| **Formate** | JPEG, PNG, WebP | SVG, PDF, AI |
|
||
| **Bearbeitung** | Pixel-basiert | Objekt-basiert |
|
||
|
||
<!--
|
||
- Entscheidungsregel:
|
||
- Foto → immer Raster
|
||
- Logo → immer Vektor
|
||
- Screenshot → meist Raster
|
||
- Konvertierung:
|
||
- Vektor → Raster: trivial (Rasterisierung)
|
||
- Raster → Vektor: schwierig, oft unbefriedigend (Tracing)
|
||
- Frage: "Warum verschickt euch der Grafiker das Logo als .ai oder .svg?"
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Menschliche Wahrnehmung
|
||
## Psychovisuelle Kompression
|
||
|
||
<!--
|
||
- Jetzt wird's spannend: Wie können wir 90% der Daten wegwerfen, ohne dass es auffällt?
|
||
- Antwort: Das menschliche Auge ist kein perfekter Sensor
|
||
- Wir nutzen seine Schwächen aus
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# Die Schwächen des Auges
|
||
|
||
**Menschen sehen:**
|
||
* Helligkeit besser als Farbe
|
||
* Große Flächen besser als feine Details
|
||
* Niedrige Frequenzen besser als hohe
|
||
|
||
**JPEG nutzt das aus:**
|
||
* Farbauflösung reduzieren (Helligkeit behalten)
|
||
* Glatte Flächen effizient speichern
|
||
* Hohe Frequenzen (feine Details) verwerfen
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Mehr Stäbchen (Helligkeit) als Zapfen (Farbe) im Auge
|
||
- "Frequenz" = räumliche Frequenz = wie schnell ändert sich Helligkeit?
|
||
- Niedrig = langsame Änderung = große gleichmäßige Fläche
|
||
- Hoch = schnelle Änderung = feine Details, Kanten
|
||
- Analogie zur Psychoakustik bei MP3 (letztes Mal)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Psychovisuelle Wahrnehmung: Erklaerung
|
||
|
||
**Definition:** Das menschliche Auge hat Schwaechen, die Kompressionsverfahren gezielt ausnutzen.
|
||
|
||
**Was Menschen schlecht sehen:**
|
||
| Eigenschaft | Wahrnehmung | JPEG-Strategie |
|
||
|-------------|-------------|----------------|
|
||
| Farbe vs. Helligkeit | Helligkeit besser | Farbaufloesung reduzieren |
|
||
| Hohe Frequenzen | Schlechter | Feine Details verwerfen |
|
||
| Kleine Unterschiede | Kaum merkbar | Quantisierung |
|
||
|
||
**Raeumliche Frequenz:**
|
||
- **Niedrig:** Langsame Aenderung = grosse Flaechen
|
||
- **Hoch:** Schnelle Aenderung = feine Details, Kanten
|
||
|
||
**Biologische Grundlage:**
|
||
- Mehr Staebchen (Helligkeit) als Zapfen (Farbe) im Auge
|
||
- Aehnlich: Psychoakustik bei MP3 (Maskierungseffekte)
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Kompressionsvergleich am Beispiel
|
||
- Von links nach rechts: zunehmende Kompression
|
||
- Frage: "Ab wo seht ihr deutliche Qualitätsverluste?"
|
||
- Zeigt: Viel Spielraum für "unsichtbare" Kompression
|
||
-->
|
||
|
||
---
|
||
|
||

|
||
|
||
# Grenzen der Kompression: JPEG-Artefakte
|
||
|
||
**Bei starker Kompression sichtbar:**
|
||
|
||
* **Posterization:**
|
||
Farbverläufe werden stufig
|
||
|
||
* **Blocking:**
|
||
8×8-Blöcke werden sichtbar
|
||
|
||
* **Ringing:**
|
||
"Geister" an scharfen Kanten
|
||
|
||
<!--
|
||
- Artefakte = sichtbare Spuren der Kompression
|
||
- Blocking: Benachbarte 8×8-Blöcke unabhängig komprimiert
|
||
- Ringing: DCT hat Probleme mit harten Kanten (Gibbs-Phänomen)
|
||
- Posterization: Zu wenig Bits für feine Farbabstufungen
|
||
- Demo: Stark komprimiertes JPEG zoomen
|
||
-->
|
||
|
||
---
|
||
|
||
# JPEG-Qualität in der Praxis
|
||
|
||
| Quality | Typische Größe (12 MP) | Artefakte |
|
||
|--------:|----------------------:|-----------|
|
||
| 100 | 2–3 MB | Minimal |
|
||
| 85–90 | 200–400 KB | Kaum sichtbar |
|
||
| 60 | ~100 KB | Bei genauem Hinsehen |
|
||
| 30 | ~50 KB | Deutlich sichtbar |
|
||
|
||
**Sweet Spot: 85–90**
|
||
~10× Kompression, für Menschen kaum unterscheidbar
|
||
|
||
<!--
|
||
- Quality 100 ≠ unkomprimiert (immer noch lossy!)
|
||
- Für Web/Social Media: 60–80 oft ausreichend
|
||
- Für Archivierung: 90–100 oder besser PNG/RAW
|
||
- Faustregel: Quality 85 = guter Kompromiss
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# JPEG-Kompression
|
||
## Sechs Schritte im Detail
|
||
|
||
<!--
|
||
- Jetzt: Unter die Haube schauen
|
||
- JPEG = Joint Photographic Experts Group (1992)
|
||
- Sechs Schritte, davon einer verlustbehaftet
|
||
- Interaktive Demo: https://claude.ai/public/artifacts/452e62f1-8525-442d-aa88-bf3795cab2c5
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||

|
||
|
||
# JPEG Schritt 1: Farbraumkonversion
|
||
|
||
**RGB → Y'CbCr**
|
||
|
||
- **Y** = Helligkeit (Luminanz)
|
||
- **Cb** = Blau-Gelb-Anteil (Chrominanz)
|
||
- **Cr** = Rot-Grün-Anteil (Chrominanz)
|
||
|
||
**Warum?**
|
||
Y (Helligkeit) behält volle Auflösung
|
||
Cb/Cr (Farbe) kann reduziert werden
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- YCbCr = auch 3 Werte pro Pixel, aber anders organisiert
|
||
- Statt R-G-B: Helligkeit + 2 Farbdifferenzen
|
||
- Umrechnung ist reversibel (mathematische Transformation)
|
||
- Vorteil: Helligkeit und Farbe getrennt behandelbar
|
||
- Bild zeigt: Y (oben), Cb (Mitte), Cr (unten)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# JPEG Farbraumkonversion: Erklaerung
|
||
|
||
**Definition:** Umwandlung von RGB (Rot-Gruen-Blau) in YCbCr (Helligkeit + Farbdifferenzen).
|
||
|
||
| Kanal | Bedeutung | Behandlung |
|
||
|-------|-----------|------------|
|
||
| **Y** | Luminanz (Helligkeit) | Volle Aufloesung behalten |
|
||
| **Cb** | Blau-Gelb-Differenz | Kann reduziert werden |
|
||
| **Cr** | Rot-Gruen-Differenz | Kann reduziert werden |
|
||
|
||
**Warum diese Trennung?**
|
||
- Menschliches Auge: empfindlicher fuer Helligkeit als Farbe
|
||
- Y behaelt volle Aufloesung → Schaerfe erhalten
|
||
- Cb/Cr reduziert (Chroma Subsampling) → Daten sparen
|
||
|
||
**Chroma Subsampling 4:2:0:**
|
||
- 4 Pixel teilen sich einen Farbwert
|
||
- Jeder Pixel behaelt eigene Helligkeit
|
||
- = 50% Datenreduktion bei kaum sichtbarem Verlust
|
||
|
||
---
|
||
|
||
# JPEG Schritt 2: Chroma Subsampling
|
||
|
||
**Notation `J:a:b`** (bezogen auf 4×2 Pixel-Block):
|
||
- **J** = Referenzbreite (immer 4)
|
||
- **a** = Farbsamples in Zeile 1
|
||
- **b** = Farbsamples in Zeile 2
|
||
|
||
| Schema | Bedeutung | Farbdaten |
|
||
|--------|-----------|-----------|
|
||
| 4:4:4 | Volle Farbauflösung | 100% |
|
||
| 4:2:2 | Halbe horizontale Auflösung | 50% |
|
||
| 4:2:0 | Viertel Auflösung (2×2 teilt Farbe) | 25% |
|
||
|
||
**4:2:0 ist JPEG-Standard**
|
||
|
||
<!--
|
||
- Beispiel 4:2:0: 4 Pixel teilen sich einen Farbwert, aber jeder hat eigene Helligkeit
|
||
- Auge merkt es kaum → psychovisuelle Kompression
|
||
- Bereits hier: 50% Datenreduktion ohne sichtbaren Verlust
|
||
- In Video noch wichtiger (weniger Bandbreite)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Visualisierung der Subsampling-Schemata
|
||
- Obere Reihe: Luminanz (Y) – immer voll
|
||
- Untere Reihen: Chrominanz (Cb, Cr) – reduziert
|
||
- 4:2:0 am häufigsten (JPEG, Video)
|
||
-->
|
||
|
||
---
|
||
|
||
# JPEG Schritt 3: Block-Aufteilung
|
||
|
||
**Das Bild wird in 8×8-Pixel-Blöcke zerlegt**
|
||
|
||
Jeder Block wird unabhängig verarbeitet.
|
||
Bei 1920×1080: 240 × 135 = **32.400 Blöcke**
|
||
|
||
**Level Shift:**
|
||
Pixelwerte um −128 verschieben
|
||
- Vorher: 0 bis 255
|
||
- Nachher: −128 bis +127
|
||
|
||
**Warum?**
|
||
DCT arbeitet besser mit Werten um Null
|
||
|
||
<!--
|
||
- 8×8 = historischer Kompromiss (Rechenleistung 1992)
|
||
- Unabhängige Verarbeitung = Grund für Blocking-Artefakte
|
||
- Level Shift: Mathematische Vorbereitung für DCT
|
||
- Bei nicht durch 8 teilbaren Dimensionen: Padding am Rand
|
||
-->
|
||
|
||
---
|
||
|
||
# JPEG Schritt 4: DCT (Discrete Cosine Transform)
|
||
|
||
**Jeder 8×8-Block wird transformiert:**
|
||
64 Pixelwerte → 64 Frequenzkoeffizienten
|
||
|
||
**Die 64 Koeffizienten:**
|
||
|
||
| Position | Name | Bedeutung |
|
||
|----------|------|-----------|
|
||
| (0,0) | DC | Durchschnittshelligkeit |
|
||
| Rest | AC | Helligkeitsänderungen |
|
||
|
||
**Energy Compaction:**
|
||
90% der Information in den ersten 10–15 Koeffizienten
|
||
DCT selbst ist **verlustfrei** und reversibel!
|
||
|
||
<!--
|
||
- DCT = Herzstück von JPEG
|
||
- Ähnlich wie Fourier-Transformation, aber nur Cosinus
|
||
- Sortiert Information nach "Wichtigkeit"
|
||
- Niedrige Frequenzen (oben links) = wichtig
|
||
- Hohe Frequenzen (unten rechts) = Details, oft verzichtbar
|
||
- NICHT hier passiert der Verlust!
|
||
-->
|
||
|
||
---
|
||
|
||
# JPEG Schritt 5: Quantisierung
|
||
|
||
**Hier passiert der Datenverlust!**
|
||
|
||
Die DCT hat sortiert – jetzt wird aufgeräumt:
|
||
- Wichtige Werte (niedrige Frequenz) → präzise behalten
|
||
- Unwichtige Werte (hohe Frequenz) → vergröbern oder Null setzen
|
||
|
||
**Ergebnis:**
|
||
Von 64 Werten pro Block bleiben oft nur 5–15 übrig
|
||
Rest wird zu Nullen → extrem gut komprimierbar
|
||
|
||
**Quality-Einstellung:**
|
||
Hoch = mehr Werte behalten = größere Datei
|
||
Niedrig = mehr Nullen = kleinere Datei, mehr Artefakte
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Quantisierung = Division durch Quantisierungsmatrix + Runden
|
||
- Einziger verlustbehafteter Schritt!
|
||
- Quality 100 ≠ verlustfrei, nur "wenig wegwerfen"
|
||
- Quantisierungstabellen basieren auf Wahrnehmungsforschung
|
||
-->
|
||
|
||
---
|
||
|
||

|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: 'https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization' -->
|
||
|
||
<!--
|
||
- Visualisierung von Quantisierung (hier: Farbreduktion)
|
||
- Prinzip gilt auch für DCT-Koeffizienten
|
||
- Weniger Stufen = weniger Daten = weniger Qualität
|
||
-->
|
||
|
||
---
|
||
|
||
# JPEG Schritt 5b: Zigzag & RLE
|
||
|
||
**Nach Quantisierung:** Viele Nullen (v.a. bei hohen Frequenzen)
|
||
|
||
**Zigzag-Scan:** Matrix diagonal durchlaufen
|
||
→ Nullen sammeln sich am Ende
|
||
|
||
```
|
||
┌────────────────┐
|
||
│ 1 2 6 7 ... │ Niedrig → Hoch
|
||
│ 3 5 8 ... │ (diagonal)
|
||
│ 4 9 ... │
|
||
└────────────────┘
|
||
```
|
||
|
||
**RLE (Run-Length Encoding):**
|
||
`0 0 0 0 0 0 0 0` → `(8, 0)` = "acht Nullen"
|
||
|
||
<!--
|
||
- Zigzag: Clever – sortiert so, dass Nullen am Ende stehen
|
||
- RLE: Klassische verlustfreie Kompression
|
||
- Lange Nullsequenzen → sehr kurze Codes
|
||
- Beispiel: "00000000" (8 Byte) → "(8,0)" (2 Byte)
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# JPEG Schritt 6: Huffman-Coding
|
||
|
||
**Verlustfreie Kompression der Restwerte**
|
||
|
||
**Idee:** Variable Bitlänge statt fester 8 Bit
|
||
Häufige Werte → kurze Codes
|
||
|
||
| Zeichen | Häufigkeit | Code |
|
||
|---------|------------|------|
|
||
| e | 40% | `0` (1 Bit) |
|
||
| a | 25% | `10` (2 Bit) |
|
||
| i | 20% | `110` (3 Bit) |
|
||
| o | 10% | `1110` (4 Bit) |
|
||
| u | 5% | `1111` (4 Bit) |
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Huffman = verlustfrei, optimal für bekannte Häufigkeiten
|
||
- Präfix-frei: Kein Code ist Anfang eines anderen
|
||
- Häufigstes Zeichen = kürzester Code
|
||
- Auch in ZIP, PNG, MP3 verwendet
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Huffman-Coding: Erklaerung
|
||
|
||
**Definition:** Verlustfreie Kompression durch variable Codelaengen basierend auf Zeichenhaeufigkeit.
|
||
|
||
**Prinzip:**
|
||
- Haeufige Zeichen → kurze Codes
|
||
- Seltene Zeichen → lange Codes
|
||
- Praefix-frei: Kein Code ist Anfang eines anderen
|
||
|
||
**Beispiel ABRACADABRA:**
|
||
| Zeichen | Haeufigkeit | Code |
|
||
|---------|-------------|------|
|
||
| A | 5× | `0` (1 Bit) |
|
||
| B | 2× | `10` (2 Bit) |
|
||
| R | 2× | `110` (3 Bit) |
|
||
|
||
**Kompression:** 88 Bit → 23 Bit = **74% gespart**
|
||
|
||
**Einsatz:** JPEG, ZIP, PNG, MP3, DEFLATE
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
<!--
|
||
# Huffman-Coding: Beispiel
|
||
|
||
**Originaltext:** `ABRACADABRA` (11 Zeichen × 8 Bit = 88 Bit)
|
||
|
||
**Häufigkeitsanalyse:**
|
||
A=5, B=2, R=2, C=1, D=1
|
||
|
||
**Huffman-Baum → Codes:**
|
||
| Zeichen | Häufigkeit | Code |
|
||
|---------|------------|------|
|
||
| A | 5 | `0` |
|
||
| B | 2 | `10` |
|
||
| R | 2 | `110` |
|
||
| C | 1 | `1110` |
|
||
| D | 1 | `1111` |
|
||
|
||
**Codiert:** `0 10 110 0 1110 0 1111 0 10 110 0` = **23 Bit**
|
||
**Kompression:** 88 → 23 Bit = **74% gespart**
|
||
|
||
|
||
- Beispiel Schritt für Schritt durchrechnen
|
||
- Warum funktioniert's? A kommt 5× vor, bekommt kürzesten Code
|
||
- Präfix-Eigenschaft: Kein Code ist Anfang eines anderen → eindeutig dekodierbar
|
||
- Frage: "Was passiert, wenn alle Zeichen gleich häufig sind?" → Keine Ersparnis
|
||
- In JPEG: Nicht Buchstaben, sondern DCT-Koeffizienten werden so codiert
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Zusammenfassung: Typische JPEG-Artefakte
|
||
- Blocking: 8×8-Struktur sichtbar
|
||
- Ringing: Geister um Kanten
|
||
- Color Banding: Farbverläufe werden stufig
|
||
- Alles Folgen der Quantisierung
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Andere Bildformate
|
||
## PNG, GIF, WebP, AVIF
|
||
|
||
15:33 Uhr weiter
|
||
|
||
<!--
|
||
- JPEG ist nicht für alles geeignet
|
||
- Jetzt: Alternativen und ihre Stärken
|
||
-->
|
||
|
||
---
|
||
|
||
# PNG: Verlustfrei mit Transparenz
|
||
|
||
**PNG = Portable Network Graphics (1996)**
|
||
|
||
**Entstehung:** GIF-Patent-Streit → Community entwickelt Alternative
|
||
|
||
**Features:**
|
||
- Verlustfrei (Lossless)
|
||
- Alpha-Transparenz (8-Bit, 256 Stufen)
|
||
- Millionen Farben (24/48 Bit)
|
||
- Patent-frei
|
||
|
||
**Ideal für:** Grafiken, Screenshots, Text, Logos
|
||
|
||
<!--
|
||
- PNG entstand als Reaktion auf GIF-Lizenzprobleme
|
||
- "PNG is Not GIF" (rekursives Akronym)
|
||
- DEFLATE-Kompression (wie ZIP)
|
||
- Keine Qualitätsverluste, aber größer als JPEG für Fotos
|
||
- Transparenz mit 256 Stufen (nicht nur an/aus wie GIF)
|
||
-->
|
||
|
||
---
|
||
|
||
# GIF: Der Meme-Veteran
|
||
|
||
**GIF = Graphics Interchange Format (1987)**
|
||
|
||
**Features:**
|
||
- 256 Farben (8-Bit Palette)
|
||
- Verlustfrei (innerhalb der Palette)
|
||
- Animationen
|
||
|
||
**Das Patent-Drama (1994):**
|
||
Unisys fordert Lizenzgebühren für LZW-Kompression
|
||
→ "Burn All GIFs!"-Kampagne
|
||
→ PNG als Alternative
|
||
|
||
**Heute:** Kulturell unsterblich (Memes, Reaktionen)
|
||
|
||
<!--
|
||
- CompuServe entwickelte GIF 1987
|
||
- LZW = Lempel-Ziv-Welch Kompression
|
||
- Patent lief 2004 aus, aber PNG war da längst etabliert
|
||
- GIF überlebte wegen Animationen
|
||
- Aussprache: "GIF" vs. "JIF" – ewiger Streit (Erfinder sagt "JIF")
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# WebP & AVIF: Moderne Alternativen
|
||
|
||
**WebP (Google, 2010):**
|
||
- Lossy und Lossless
|
||
- Transparenz und Animationen
|
||
- 25–35% kleiner als JPEG
|
||
|
||
**AVIF (2019):**
|
||
- Basiert auf AV1-Video-Codec
|
||
- 50% kleiner als JPEG
|
||
- HDR-Unterstützung, patent-frei
|
||
|
||
**Browser-Support 2025:** WebP universell, AVIF wächst
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- WebP: VP8-Kompression (Google Video-Codec)
|
||
- AVIF: Alliance for Open Media (Google, Netflix, Amazon, Apple, Mozilla)
|
||
- Beide besser als JPEG, aber Kompatibilität bleibt Problem
|
||
- JPEG bleibt dominant: alte Kameras, Software, Workflows
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# WebP & AVIF: Erklaerung
|
||
|
||
**Definition:** Moderne Bildformate mit besserer Kompression als JPEG.
|
||
|
||
| Format | Jahr | Basis | Vorteil |
|
||
|--------|------|-------|---------|
|
||
| **WebP** | 2010 | VP8 (Google) | 25-35% kleiner als JPEG |
|
||
| **AVIF** | 2019 | AV1 | 50% kleiner als JPEG |
|
||
|
||
**WebP Features:**
|
||
- Lossy und Lossless
|
||
- Transparenz (Alpha)
|
||
- Animationen (ersetzt GIF)
|
||
|
||
**AVIF Features:**
|
||
- HDR-Unterstuetzung
|
||
- Patent-frei (Alliance for Open Media)
|
||
- Beste Kompression, aber langsamer
|
||
|
||
**Browser-Support 2025:** WebP universell, AVIF waechst
|
||
**Realitaet:** JPEG bleibt dominant (Kompatibilitaet)
|
||
|
||
---
|
||
|
||
# Formatwahl in der Praxis
|
||
|
||
| Anwendung | Format |
|
||
|-----------|--------|
|
||
| Fotos fürs Web | JPEG (85), WebP |
|
||
| Screenshots | PNG |
|
||
| Logos, Icons | SVG, PNG |
|
||
| Animationen | GIF, WebP, APNG |
|
||
| Archivierung | TIFF, PNG, RAW |
|
||
| Social Media | Was die Plattform erlaubt |
|
||
|
||
<!--
|
||
- Kompatibilität schlägt oft Effizienz
|
||
- TIFF für Archivierung: Unkomprimiert oder verlustfrei
|
||
- RAW für Fotografen: Maximale Bearbeitungsfreiheit
|
||
- Frage: "Was passiert, wenn ihr ein PNG auf Instagram hochladet?"
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Vorher/Nachher: Original vs. Instagram-Upload
|
||
- Sichtbare Qualitätsverluste
|
||
- Warum? → Nächste Folie
|
||
-->
|
||
|
||
---
|
||
|
||
# Warum Instagram eure Fotos "ruiniert"
|
||
|
||
**Die Upload-Pipeline:**
|
||
1. Euer Foto: 12 MP, 8 MB
|
||
2. Instagram skaliert: max. 1080px Breite
|
||
3. Re-Kompression: JPEG Quality ~75
|
||
4. Ergebnis: 200–400 KB
|
||
|
||
**Warum?**
|
||
- Speicherkosten (Milliarden Fotos)
|
||
- Ladezeiten (Mobile-First)
|
||
- Bandbreite (günstiger für alle)
|
||
|
||
<!--
|
||
- Instagram ist keine Kunstgalerie, sondern Massenplattform
|
||
- Optimiert für Geschwindigkeit, nicht Qualität
|
||
- Facebook, Twitter, TikTok – alle machen das
|
||
- Tipp für Fotografen: Portfolio auf eigener Website
|
||
- Diskussion: Ist das fair? Trade-off Nutzer vs. Plattform
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Video
|
||
## Bilder + Zeit + Audio
|
||
|
||
<!--
|
||
- Jetzt wird's richtig interessant
|
||
- Video = viele Bilder + Ton + Synchronisation
|
||
- Das Größenproblem potenziert sich
|
||
- Interaktive Demo: https://claude.ai/public/artifacts/fd58ac94-6b64-4d93-82be-ffb648ed9897
|
||
-->
|
||
|
||
---
|
||
|
||
# Das Größenproblem bei Video
|
||
|
||
**4K-Video (3840×2160), unkomprimiert:**
|
||
|
||
3840 × 2160 × 3 Bytes = **24,8 MB pro Frame**
|
||
|
||
× 30 fps = **744 MB/Sekunde**
|
||
|
||
× 60 Sekunden = **44,6 GB pro Minute**
|
||
|
||
**Ein 2-Stunden-Film: über 5 Terabyte**
|
||
|
||
<!--
|
||
- Rechnung gemeinsam durchgehen
|
||
- Frage: "Wie groß ist ein Netflix-Film typischerweise?" → 3–7 GB
|
||
- Das ist Faktor 1000 Kompression!
|
||
- Ohne Video-Kompression: Kein Streaming, kein YouTube, keine Blu-rays
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# Container und Codec
|
||
|
||
**Container = Dateiformat (z.B. MP4)**
|
||
Die "Box", die verschiedene Streams zusammenpackt:
|
||
- Video-Stream
|
||
- Audio-Stream(s)
|
||
- Untertitel
|
||
- Metadaten
|
||
|
||
**Codec = Kompressionsalgorithmus (z.B. H.264)**
|
||
Bestimmt, WIE komprimiert wird
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- Container ≠ Codec (häufiges Missverständnis!)
|
||
- MP4 kann H.264, H.265 oder AV1 enthalten
|
||
- Gleiche Endung, unterschiedlicher Inhalt
|
||
- Tool-Tipp: MediaInfo zeigt beides an
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Container vs. Codec: Erklaerung
|
||
|
||
**Definition:** Container und Codec sind zwei verschiedene Konzepte bei Videodateien.
|
||
|
||
| Begriff | Bedeutung | Beispiele |
|
||
|---------|-----------|-----------|
|
||
| **Container** | Dateiformat/"Box" | MP4, MKV, WebM, MOV |
|
||
| **Codec** | Kompressionsalgorithmus | H.264, H.265, VP9, AV1 |
|
||
|
||
**Container enthaelt:**
|
||
- Video-Stream (komprimiert mit Codec)
|
||
- Audio-Stream(s)
|
||
- Untertitel
|
||
- Metadaten (Kapitel, Thumbnail)
|
||
|
||
**Wichtig:** Gleiche Endung ≠ gleicher Inhalt!
|
||
- film.mp4 kann H.264, H.265 oder AV1 enthalten
|
||
- Tool-Tipp: **MediaInfo** zeigt beides an
|
||
|
||
**Merkhilfe:** "Container = Schachtel, Codec = Verpackungsart"
|
||
|
||
---
|
||
|
||
# Gängige Container
|
||
|
||
| Container | Verwendung |
|
||
|-----------|------------|
|
||
| **MP4** (.mp4) | Web, Streaming, universell |
|
||
| **MKV** (.mkv) | Archiv, viele Streams, offen |
|
||
| **MOV** (.mov) | Apple-Ökosystem |
|
||
| **WebM** (.webm) | Web, nur VP9/AV1 + Opus |
|
||
| **AVI** (.avi) | Legacy, veraltet |
|
||
|
||
<!--
|
||
- MP4 = MPEG-4 Part 14, ISO-Standard
|
||
- MKV = Matroska (russische Matrjoschka-Puppen)
|
||
- WebM = Subset von Matroska für HTML5
|
||
- MKV beliebt für Filme mit mehreren Sprachen
|
||
- AVI: Bitte nicht mehr verwenden
|
||
-->
|
||
|
||
---
|
||
|
||
# Video-Codecs im Überblick
|
||
|
||
| Codec | Jahr | Status |
|
||
|-------|------|--------|
|
||
| **H.264/AVC** | 2003 | Universal, überall |
|
||
| **H.265/HEVC** | 2013 | Effizienter, Patent-Chaos |
|
||
| **VP9** | 2013 | YouTube, patent-frei |
|
||
| **AV1** | 2018 | Zukunft, patent-frei |
|
||
|
||
<!--
|
||
- H.264: De-facto-Standard seit 20 Jahren, Hardware-Decoder überall
|
||
- H.265: 50% besser, aber drei konkurrierende Patent-Pools
|
||
- VP9: Google kaufte On2 Technologies, forciert über YouTube
|
||
- AV1: Alliance for Open Media – die Tech-Giganten vereint
|
||
-->
|
||
|
||
---
|
||
|
||
# Container + Codec = Video
|
||
|
||
```
|
||
┌─────────────────────────────┐
|
||
│ Container (z.B. MP4) │
|
||
│ ┌────────────────────────┐ │
|
||
│ │ Video-Stream (H.264) │ │
|
||
│ ├────────────────────────┤ │
|
||
│ │ Audio-Stream (AAC) │ │
|
||
│ ├────────────────────────┤ │
|
||
│ │ Untertitel (SRT) │ │
|
||
│ ├────────────────────────┤ │
|
||
│ │ Metadaten │ │
|
||
│ └────────────────────────┘ │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
<!--
|
||
- Container = Verpackung
|
||
- Codec = wie der Inhalt komprimiert ist
|
||
- Ein MP4 mit H.264 und ein MP4 mit H.265 haben dieselbe Endung
|
||
- Wichtig für Kompatibilität: Player muss Codec unterstützen
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Video-Kompression
|
||
## Raum und Zeit nutzen
|
||
|
||
<!--
|
||
- Video hat zwei Dimensionen der Redundanz:
|
||
1. Räumlich (innerhalb eines Frames) – wie bei JPEG
|
||
2. Zeitlich (zwischen Frames) – neu!
|
||
- Die zeitliche Redundanz ist der Schlüssel
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Visualisierung: I/P/B-Frame-Abhängigkeiten
|
||
- I-Frame = Vollbild (Keyframe)
|
||
- P-Frame = Vorwärts-Referenz
|
||
- B-Frame = Bidirektionale Referenz
|
||
- Mehr dazu auf den nächsten Folien
|
||
-->
|
||
|
||
---
|
||
|
||
# Drei Kompressionsprinzipien
|
||
|
||
**1. Spatial Compression (Intra-Frame)**
|
||
Jedes Bild einzeln komprimieren (wie JPEG)
|
||
|
||
**2. Temporal Compression (Inter-Frame)**
|
||
Nur Änderungen zwischen Bildern speichern
|
||
|
||
**3. Motion Compensation**
|
||
Bewegung beschreiben statt Pixel kopieren
|
||
|
||
<!--
|
||
- Spatial = räumlich, innerhalb eines Bildes
|
||
- Temporal = zeitlich, zwischen Bildern
|
||
- Motion Compensation = Bewegungsvektoren
|
||
- 90% eines Frames oft identisch mit dem vorherigen!
|
||
- Kernidee: Warum zweimal speichern, was sich nicht ändert?
|
||
-->
|
||
|
||
---
|
||
|
||
# Spatial Compression (Intra-Frame)
|
||
|
||
**Jedes Bild einzeln komprimieren – wie JPEG**
|
||
|
||
Analysiert Redundanz *innerhalb* eines Frames:
|
||
- DCT (Frequenzanalyse)
|
||
- Quantisierung
|
||
- Entropie-Coding
|
||
|
||
**→ I-Frame (Keyframe)**
|
||
Vollständiges Bild, unabhängig dekodierbar
|
||
|
||
<!--
|
||
- I = Intra = innerhalb
|
||
- I-Frames sind groß, aber wichtig für:
|
||
- Seeking (Springen im Video)
|
||
- Fehlerkorrektur
|
||
- Schnitt
|
||
- Typisch alle 1–2 Sekunden ein I-Frame
|
||
-->
|
||
|
||
---
|
||
|
||
# Temporal Compression (Inter-Frame)
|
||
|
||
**Nur Änderungen zwischen Bildern speichern**
|
||
|
||
| Frame-Typ | Referenziert | Typische Größe |
|
||
|-----------|--------------|----------------|
|
||
| **I-Frame** | Nichts (Keyframe) | 100% |
|
||
| **P-Frame** | Vorherige Frames | ~30% |
|
||
| **B-Frame** | Vorherige + zukünftige | ~15% |
|
||
|
||
**GOP (Group of Pictures):**
|
||
I - B - B - P - B - B - P - B - B - I
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- I = Intra (vollständig)
|
||
- P = Predicted (vorhergesagt aus Vergangenheit)
|
||
- B = Bi-directional (Vergangenheit + Zukunft)
|
||
- B-Frames sind am kleinsten, aber brauchen mehr Rechenleistung
|
||
- GOP-Länge beeinflusst Seeking-Geschwindigkeit
|
||
-->
|
||
|
||
---
|
||
|
||
# Motion Compensation
|
||
|
||
**Bewegung beschreiben statt Pixel kopieren**
|
||
|
||
**Beispiel:** Ein 16×16 Pixel-Block
|
||
|
||
Frame 1: Block an Position (100, 200)
|
||
Frame 2: Block an Position (120, 200)
|
||
|
||
**Statt Block zweimal speichern:**
|
||
→ Motion Vector: "verschiebe um (+20, 0)"
|
||
|
||
<!--
|
||
- Macroblocks: Typisch 16×16 oder variable Größen
|
||
- Motion Vectors beschreiben Verschiebung
|
||
- Funktioniert gut bei: Kameraschwenks, bewegte Objekte
|
||
- Funktioniert schlecht bei: Szenenwechsel, Konfetti, Feuerwerk
|
||
- Demo: Video Frame für Frame durchgehen
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
<!--
|
||
- Nochmal das Bild mit dem neuen Wissen betrachten
|
||
- Pfeile zeigen Abhängigkeiten
|
||
- B-Frames referenzieren in beide Richtungen
|
||
- Frage: "Was passiert, wenn ein I-Frame beschädigt ist?"
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# H.264 / AVC
|
||
|
||
**Advanced Video Coding (2003)**
|
||
|
||
**Warum dominant?**
|
||
- Exzellente Kompression (~100:1 möglich)
|
||
- Hardware-Decoder in jedem Gerät seit ~2010
|
||
- YouTube, Netflix, Blu-ray – alles H.264
|
||
|
||
**Features:**
|
||
- Variable Block-Größen (16×16 bis 4×4)
|
||
- Deblocking-Filter (reduziert Artefakte)
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- H.264 revolutionierte Video-Streaming
|
||
- Ohne H.264 kein Netflix, kein YouTube HD
|
||
- Hardware-Decoder = kein CPU-Aufwand, kein Akku-Drain
|
||
- Selbst billigste Smartphones können H.264 abspielen
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# H.264/AVC: Erklaerung
|
||
|
||
**Definition:** Der dominierende Video-Codec seit 2003, der modernes Video-Streaming erst ermoeglichte.
|
||
|
||
**Warum so erfolgreich?**
|
||
| Eigenschaft | Bedeutung |
|
||
|-------------|-----------|
|
||
| Kompression | ~100:1 moeglich |
|
||
| Hardware | Decoder in jedem Geraet seit ~2010 |
|
||
| Verbreitung | YouTube, Netflix, Blu-ray |
|
||
|
||
**Technische Features:**
|
||
- Variable Block-Groessen (16×16 bis 4×4)
|
||
- Deblocking-Filter (reduziert Blocking-Artefakte)
|
||
- I-, P-, B-Frames (temporale Kompression)
|
||
|
||
**Patent-Situation:**
|
||
- MPEG-LA Pool: 2000+ Patente
|
||
- "Internet Broadcast" fuer Endnutzer kostenlos
|
||
- Hardware-Decoder: ~$0,20/Geraet
|
||
|
||
---
|
||
|
||
# Das Patent-Problem
|
||
|
||
**H.264 ist nicht frei**
|
||
|
||
**MPEG-LA (Patent Pool):**
|
||
- 2.000+ Patente von ~30 Unternehmen
|
||
- Apple, Microsoft, Sony, Panasonic...
|
||
|
||
**Lizenzgebühren:**
|
||
- Hardware-Decoder: $0,20 pro Einheit
|
||
- "Internet Broadcast": Kostenlos (YouTube etc.)
|
||
|
||
**Problem:** Open-Source-Projekte in Grauzone
|
||
|
||
<!--
|
||
- MPEG-LA = Licensing Authority
|
||
- Firefox weigerte sich lange, H.264 zu unterstützen
|
||
- "Free to View" gilt nur für Endnutzer-Streaming
|
||
- Diskussion: Sollten Standards patent-frei sein?
|
||
-->
|
||
|
||
---
|
||
|
||
# H.265 / HEVC: Effizienter, aber...
|
||
|
||
**High Efficiency Video Coding (2013)**
|
||
|
||
50% bessere Kompression als H.264
|
||
|
||
**Das Problem: Patent-Chaos**
|
||
|
||
Drei konkurrierende Patent-Pools:
|
||
- MPEG-LA
|
||
- HEVC Advance
|
||
- Velos Media
|
||
|
||
Unklare Kosten, rechtliche Unsicherheit
|
||
→ Viele bleiben bei H.264 oder wechseln zu AV1
|
||
|
||
<!--
|
||
- Technisch überlegen, aber Lizenz-Albtraum
|
||
- 4K-Streaming wäre ohne H.265/VP9/AV1 nicht praktikabel
|
||
- Apple nutzt HEVC (iPhone-Videos)
|
||
- Netflix zögerte lange
|
||
- Lehre: Technische Überlegenheit reicht nicht
|
||
-->
|
||
|
||
---
|
||
|
||
# VP9: Googles Antwort
|
||
|
||
**VP9 (2013)**
|
||
|
||
Google kaufte On2 Technologies (2010, $133M)
|
||
VP8 → VP9 → AV1
|
||
|
||
**Eigenschaften:**
|
||
- Ähnliche Effizienz wie H.265
|
||
- Patent-frei (laut Google)
|
||
- YouTube nutzt VP9 für 4K
|
||
|
||
**Nachteil:** Höherer CPU-Aufwand als H.264
|
||
|
||
<!--
|
||
- YouTube forciert VP9: 4K-Videos nur in VP9 oder AV1
|
||
- Hardware-Decoder ab ~2016 in GPUs
|
||
- Google's Strategie: Eigene Infrastruktur als Hebel
|
||
- Frage: Ist es gut, wenn ein Konzern Standards setzt?
|
||
-->
|
||
|
||
---
|
||
|
||

|
||
|
||
<!-- _class: klausur -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
<!-- _backgroundColor: #e3f2fd -->
|
||
|
||
# AV1: Die offene Zukunft
|
||
|
||
**AV1 (2018)**
|
||
|
||
**Alliance for Open Media:**
|
||
Google, Netflix, Amazon, Microsoft, Apple, Mozilla...
|
||
|
||
**Eigenschaften:**
|
||
- 30% besser als H.265
|
||
- Royalty-free, Open Source
|
||
- 8K, HDR, hohe Frame-Rates
|
||
|
||
**Stand 2025:**
|
||
YouTube, Netflix nutzen AV1 für 4K/8K
|
||
Hardware-Encoder in aktuellen GPUs
|
||
|
||
<!--
|
||
KLAUSURRELEVANT:
|
||
- AOM gegründet 2015 – historisch: Konkurrenten vereint
|
||
- Ziel: Nie wieder Patent-Chaos wie bei H.265
|
||
- Problem: Encoding sehr langsam (10–100× vs. H.264)
|
||
- Hardware-Encoder lösen das zunehmend
|
||
- AV1 gewann 2024 einen Emmy für technische Innovation
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: erklaerung -->
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# AV1: Erklaerung
|
||
|
||
**Definition:** Der offene, lizenzfreie Video-Codec der Zukunft, entwickelt von der Alliance for Open Media.
|
||
|
||
**Alliance for Open Media (AOM):**
|
||
- Gegruendet 2015: Google, Netflix, Amazon, Microsoft, Apple, Mozilla
|
||
- Ziel: Patent-freier Standard nach H.265-Chaos
|
||
|
||
| Eigenschaft | AV1 |
|
||
|-------------|-----|
|
||
| Effizienz | 30% besser als H.265 |
|
||
| Lizenz | Royalty-free, Open Source |
|
||
| Features | 8K, HDR, hohe Frame-Rates |
|
||
|
||
**Stand 2025:**
|
||
- YouTube, Netflix nutzen AV1 fuer 4K/8K
|
||
- Hardware-Encoder in aktuellen GPUs
|
||
- Emmy-Gewinner 2024 fuer technische Innovation
|
||
|
||
**Nachteil:** Encoding sehr langsam (Hardware loest das)
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: 'https://blog.mozilla.org/en/mozilla/av1-video-codec-wins-emmy/' -->
|
||
|
||

|
||
|
||
<!--
|
||
- AV1 gewann 2024 einen Emmy für technische Innovation
|
||
- Anerkennung für offene Standards
|
||
- Zeigt: Open Source kann Industriestandard werden
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _class: lead -->
|
||
|
||
# Fragen & Diskussion
|
||
|
||
**Kontakt:** lb-czechowski@hdm-stuttgart.de
|
||
**Folien:** [librete.ch/hdm/223015b](https://librete.ch/hdm/223015b/)
|
||
|
||
<!--
|
||
- Offene Fragen?
|
||
- Welches Thema war am überraschendsten?
|
||
- Hinweis auf Selbstlernaufgaben (nächste Folien)
|
||
-->
|
||
|
||
---
|
||
|
||
# Lizenz & Attribution
|
||
|
||
Diese Präsentation ist lizenziert unter **Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)**
|
||
|
||
- Erlaubt Teilen & Anpassen mit Namensnennung
|
||
- Adaptionen müssen unter gleicher Lizenz geteilt werden
|
||
|
||
Vollständige Lizenz: [creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
|
||
|
||
<!--
|
||
- Folien dürfen verwendet und angepasst werden
|
||
- Bedingung: Namensnennung und gleiche Lizenz
|
||
- Fragen zur Lizenz? → Creative Commons Website
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||

|
||
|
||
# Selbstlernen: Bildkompression
|
||
|
||
1. Öffne [squoosh.app](https://squoosh.app)
|
||
2. Lade ein Foto hoch
|
||
3. Vergleiche: JPEG (verschiedene Quality) vs. WebP vs. AVIF
|
||
4. Beobachte: Dateigröße, Artefakte, Ladezeit
|
||
|
||
**Fragen zum Erkunden:**
|
||
- Ab welcher Quality werden Artefakte sichtbar?
|
||
- Wie viel kleiner ist WebP bei gleicher Qualität?
|
||
|
||
<!--
|
||
- Squoosh: Google-Tool zum Vergleichen von Bildformaten
|
||
- Live-Vergleich mit Schieberegler
|
||
- Ziel: Gefühl für Kompressionsraten entwickeln
|
||
- Bonus: Eigene Fotos testen
|
||
-->
|
||
|
||
---
|
||
|
||
<!-- _header: '' -->
|
||
<!-- _footer: '' -->
|
||
|
||
# Selbstlernen: Video analysieren
|
||
|
||
1. Video herunterladen (z.B. Big Buck Bunny)
|
||
2. Mit MediaInfo analysieren: Container, Codec, Bitrate
|
||
3. Optional: Mit HandBrake konvertieren
|
||
- H.264 vs. H.265 bei gleicher Qualität
|
||
- Größe und Encoding-Zeit vergleichen
|
||
|
||
**Tools:**
|
||
- [MediaInfo](https://mediaarea.net/MediaInfoOnline) (Online oder Desktop)
|
||
- [HandBrake](https://handbrake.fr) (Desktop)
|
||
|
||
<!--
|
||
- Big Buck Bunny: Open-Source-Film der Blender Foundation
|
||
- Frei verfügbar, ideal zum Experimentieren
|
||
- MediaInfo zeigt alle technischen Details
|
||
- HandBrake: GUI für FFmpeg, einfacher zu bedienen
|
||
- Experiment: Gleiches Video, verschiedene Codecs vergleichen
|
||
-->
|