- Veröffentlicht am
- • How2-Tipps
FFmpeg auf Debian: HLS-Streaming selbst hosten – Schritt für Schritt Anleitung
- Autor
-
-
- Benutzer
- tmueller
- Beiträge dieses Autors
- Beiträge dieses Autors
-
Einführung
Streaming ist heute Standard – egal ob für eigene Plattformen, Schulungsportale oder Video-Hosting. Ein besonders verbreiteter Standard ist HTTP Live Streaming (HLS). Entwickelt von Apple Inc., ermöglicht HLS das adaptive Streaming von Videos in unterschiedlichen Qualitätsstufen.
Das Beste daran: Mit FFmpeg kannst du das komplett selbst auf einem Debian-Server umsetzen – ohne externe Dienste.
In diesem Beitrag zeige ich dir Schritt für Schritt, wie du:
- FFmpeg installierst
- Videos in HLS umwandelst
- Multi-Bitrate Streaming einrichtest
- alles über deinen Webserver auslieferst
Voraussetzungen
Du brauchst:
- Debian Server (z. B. Debian 12)
- SSH-Zugriff
- Webserver (Apache oder Nginx)
- ein Testvideo (
input.mp4)
1. FFmpeg installieren
Zuerst installierst du FFmpeg:
apt update
apt install ffmpeg -y
Version prüfen:
ffmpeg -version
👉 Hinweis: Die Debian-Version ist oft nicht die aktuellste. Wenn du moderne Codecs brauchst (AV1, bessere Performance), kannst du:
- Debian Backports nutzen
- oder statische Builds verwenden
📁 2. HLS-Verzeichnis anlegen
Deine HLS-Dateien müssen über HTTP erreichbar sein:
mkdir -p /var/www/hls
👉 Wichtig:
Dieser Ordner muss in deinem Webserver eingebunden sein (z. B. /hls/).
3. Einfaches HLS-Streaming (VOD)
Jetzt wandelst du ein Video in HLS um:
ffmpeg -i input.mp4 \
-c:v libx264 -preset veryfast -crf 23 \
-c:a aac -b:a 128k \
-f hls \
-hls_time 6 \
-hls_list_size 0 \
-hls_segment_filename "/var/www/hls/segment_%03d.ts" \
/var/www/hls/playlist.m3u8
Was passiert hier?
- Video wird in H.264 kodiert
- Audio in AAC
- Video wird in kleine Stücke (Segmente) zerlegt
- Playlist (
.m3u8) wird erzeugt
👉 Ergebnis:
/var/www/hls/
├── playlist.m3u8
├── segment_000.ts
├── segment_001.ts
└── ...
4. Adaptive Bitrate (Multi-Quality Streaming)
Für professionelle Anwendungen brauchst du mehrere Qualitätsstufen:
ffmpeg -i input.mp4 \
-filter_complex "[0:v]split=2[v1][v2]; \
[v1]scale=1280:720[v1out]; \
[v2]scale=854:480[v2out]" \
-map "[v1out]" -c:v:0 libx264 -b:v:0 3000k \
-map "[v2out]" -c:v:1 libx264 -b:v:1 1500k \
-map a:0 -c:a aac -b:a 128k \
-f hls \
-var_stream_map "v:0,a:0 v:1,a:0" \
-master_pl_name master.m3u8 \
-hls_time 6 \
-hls_list_size 0 \
-hls_segment_filename "/var/www/hls/v%v/segment_%03d.ts" \
/var/www/hls/v%v/playlist.m3u8
👉 Ergebnis:
/var/www/hls/
├── master.m3u8
├── v0/
│ ├── playlist.m3u8
│ └── segment_000.ts
└── v1/
├── playlist.m3u8
└── segment_000.ts
👉 Vorteil:
- Automatische Qualitätsanpassung je nach Bandbreite
5. Webserver konfigurieren (Apache)
Damit HLS korrekt funktioniert, müssen MIME-Typen gesetzt werden.
Aktiviere Modul:
a2enmod mime
systemctl restart apache2
Dann in deine Config:
AddType application/vnd.apple.mpegurl .m3u8
AddType video/mp2t .ts
👉 Ohne diese Einstellungen funktionieren viele Player nicht!
6. Wiedergabe testen
Du kannst dein Video jetzt öffnen mit:
- VLC media player
- oder im Browser mit Video.js
Beispiel-URL:
http://dein-server/hls/master.m3u8
7. Live-Streaming mit FFmpeg
Auch Live-Streams sind möglich:
ffmpeg -i rtsp://camera-stream \
-c:v libx264 -preset veryfast \
-c:a aac \
-f hls \
-hls_time 2 \
-hls_list_size 5 \
-hls_flags delete_segments \
/var/www/hls/live.m3u8
👉 Features:
- kurze Segmente → geringe Verzögerung
- automatische Löschung alter Segmente
8. Performance & Optimierung
CPU sparen
-preset veryfastodersuperfastHardware-Encoding:
- Intel: VAAPI
- NVIDIA: NVENC
Latenz reduzieren
-hls_time 2
-hls_flags delete_segments
Speicher sparen
- Segment-Rotation aktivieren
- alte Dateien automatisch löschen
Typische Fehler
❌ Video lädt nicht
→ MIME-Type fehlt
❌ Kein Ton
→ falscher Codec (AAC nutzen!)
❌ hohe CPU-Last
→ Preset zu langsam
❌ Browser spielt nicht ab
→ kein HLS-Support → nutze Video.js
Bonus: Einfache Pipeline (Praxis)
Typischer Workflow:
- Upload (PHP / Webinterface)
- Speicherung auf Server
- FFmpeg-Job starten
- HLS-Dateien erzeugen
- Player anzeigen
👉 Perfekt für deine Plattform (Laravel / PHP / Botsystem)
Mit FFmpeg auf Debian kannst du:
- eigene Streaming-Plattform bauen
- Videos effizient bereitstellen
- adaptive Qualität anbieten
- komplett unabhängig von externen Diensten arbeiten
👉 Der größte Vorteil: volle Kontrolle über Daten, Performance und Infrastruktur