Video-Konvertierung mit FFMPEG
FFmpeg ist eine OpenSource-Software-Tool zum Konvertieren und Bearbeiten von Digitalem Video- und Audiomaterial. Neben dem Programm “ffmpeg”, das für Windows, Linux und MacOS für die Kommandozeile zur Verfügung steht, steht mit libavcodec eine Programmierbibliothek (API) für C-Compiler zur Verfügung.
Für Kompatibilität den o.g. Plattformen muss das Codecformat H.264 verwendet werden. ITU H.264 ist identisch mit ISO-Format MPEG4 AVC, Advanced Video Coding.
Anwendungsbeispiele
Umwandlung eines AVI-Files in ein MPEG4/MP4-File:
ffmpeg -i input.avi output.mp4
Befehlszeile mit expliziter Codec-Angabe zum Umwandeln in H264/MP4:
ffmpeg -i input.avi -vcodec libx264 -vprofile main output.mp4
Was bedeuten die weiteren Optionen?
-vcodec libx264 verwendet den freien H.264-Codec "x264"
-vprofile main verwendet das "Main-Profile" aus dem H.264 Standard
Welche Profile gibt es noch?
-vprofile baseline
verwendet das “Baseline Profile”, was ohne B-Frames komprimiert
-vprofile high
ist der Standard-Wert, der aber nicht zu allen Geräten kompatibel ist.
Einstellen der Qualität (Bitrate)
Die Bitrate wird über die Option “-b” eingestellt. In aktuellen ffmpeg-Versionen wird die Bitrate für den Video- oder Audioanteil getrennt über die Option “-b:v” eingestellt.
Beispiel:
ffmpeg -i input.avi -b:v 2000k -b:a 128k output.mp4
Änderung der Bildgröße
- SkalierungOption “-s WIDTHxHEIGHT”
Beispiel:
ffmpeg -i input.avi -s 640x480 output.mp4
- Crop (Abschneiden/Balken entfernen)
ffmpeg -i INFILE -vf crop=640:360:0:60 ... OUTFILEcrop : Operation: Ausschneiden
640:360 : die Größe (Dimension) WIDTH:HEIGHT des Resultats
0:60 : der Offset X:Y des Ausschnitts von der oberen linken Ecke
des Eingangsmaterials (INFILE) - Pad (Balken einfügen)INFILE sei ein 16:9-formatiger Film der Größe 640×360, der mit 60 Pixel hohen Balken oben und unten auf 4:3-Format gebracht werden soll. Kommando:
ffmpeg -i INFILE -vf pad=640:480:0:60 ... OUTFILEpad : Operation: Auffüllen
640:480 : die Größe (Dimension) WIDTH:HEIGHT des Resultats (OUTFILE)
0:60 : der Offset X:Y des Films von der oberen linken Ecke des ResultatsSoftware-Download
Weitere Links:
- ffmpeg-Homepage
Neues Wahlfach für Medieninformatik Master: “Live Medienproduktion und Video-Streaming”
In der Lehrveranstaltung werden spezielle Themen der Videoproduktion für mobile
Broadcast- und Streaming-Szenarien behandelt.
– Prinzip von Live Encoding / Streaming-Systemen
– Encoding, Streaming, Protokolle, Server, Endgeräte
– Konzeption und Aufbau eines Live Streaming-Setups für die Nutzung innerhalb der Beuth-Hochschule
– Software-Technologien von Streaming-Komponenten
– Entwicklung von Software-Tools
– Tools für Media-Konvertierung
– Mobile Devices für Videostreaming
Stichpunkte: Web, Streaming, Encoding, H.264, HTML5, Javascript, Flash, iPhone, Android, Windows, DirectShow, C/C++/C#
verschiedenen Entwicklungsplattformen (C+ /C#, HTML5, …) und Libraries für die
digitale AV-Produktion angesprochen.
Aktuelle Encoding- und Streamingtechnologien werden behandelt (z.B. Dynamic
Adaptive Streaming over http, iPhone, Android, Flash, Silverlight, usw.)
Am Rande wird ein Konzept über ein Szenario im Mobile-TV erarbeitet. Aus Sicht eines
Produktanbieter von IP-TV-Angeboten werden Kosten (u. a Server, Netz-Transport)
und Einnahme (u.a. Abonnement) bestimmt.
Voraussetzungen Grundkenntnisse der Audiotechnik, der Videotechnik, Netzwerktechnik/Streaming,
Programmierung (möglich u.a. HTML/JS, PHP, Flash, C/C++)
Medienproduktion
• Funktionsweise und Bedienung des Fernsehstudios und mobile Gräten
• Erstellung von Treatment und Produktionskonzepte
• Aufzeichnung, Mischung, Mastering, Export des Archiv-Formats für Videobeitrag
oder Life-Aufzeichnung
Distribution
• Konzept zur Dienstleistung und Szenarien, Produktmanagement, Aufwände
• Aktuelle Standards und Entwicklungen von Videocodierung und –Streaming
• Kodierung der AV-Medien, Metadaten
• Streaming & Distribution (Codecs, Formate)
• Programmierung: Bildverarbeitung, Multimedia-APIs, Directshow, C++, Plugins,
XML-Strukturen
• Test der mobilen Anwendung
Systemkonfiguration und Softwareentwicklung
• Aufbau von Live-Encoding- und Streaming-Systemen
• Soft- und Hardwareplattformen
• Entwicklung und Nutzung von modularen Plugin-Technologien
Projekte
• Innovative Contentproduktion: Mobile, Podcast
• Einsatz für Event-Aufzeichnung
• Anwendungsszenarien für Streaming-Dienste mit Blick auf geschäftliche und
akademische Nutzung
• Geräte/Übertragung/Ausgabe: Mobile, iOS (iPod, iPhone), PC
• Streaming- und Encoding-Technologien
• Einbindung in Hochschulplattformen, aktuelle Forschungs- und Lehrthemen (z.B.
Beuth-Box)
Dozenten: Prof. Lohr, Dipl.-Ing. Oliver Lietz
Streaming und Progressive Download – Grundlagen
Durch den Erfolg von Youtube usw. hat sich Web-Video und Web-Streaming mittlerweile als Standardtechnologie etabliert.
Allerdings kann man nicht in jedem Fall von echtem Streaming sprechen.
Progressive Download (“Quasi-Streaming”)
Video-Datei liegt auf einem herkömmlichen Webserver (z.B. Apache)
Download und gleichzeitiges Abspielen über HTTP
Das gesamte Video muss heruntergeladen werden um auch das Ende ansehen zu können (Workarounds möglich).
In der Regel entsteht höherer Traffic, da mehr und schneller heruntergeladen als tatsächlich angesehen wird.
Protokoll: HTTP
Beispiel-URL: http://example.com/testvideo.mp4
Streaming
Es werden spezielle Streaming Server benötigt, z.B. Flash Media Server, IIS, Wowza
Der Zuschauer kann Vor- und Zurückspringen ohne den gesamten Inhalt herunterladen zu müssen.
Es wird nur der Inhalt übertragen, der tatsächlich angesehen wird.
Protokolle: RTMP (Flash), RTSP, MMS (WindowsMedia)
Beispiel-URL: rtsp://example.com/testapp/teststream
Smooth Streaming / Segmented Streaming
In diesem Fall wird ein aufwendiger Streaming-Server verwendet, der das Material in Einzelteilen (“Chunks”) ausliefert. Der Player allerdings sieht nur eine “einfache” Playlist aus HTTP-Einzelteilen, die über HTTP-Streaming abgespielt werden.
Dieses Prinzip wird beim sog. Cupertino-Streaming für iOS (iPhone/iPad/iPod) sowie bei SmoothStreaming mit Microsoft Silverlight eingesetzt.
Beispiel-URL: http://example.com/testvideo.m3u8
3D-Video mit HTML5 und Javascript
Prof. Jürgen Lohr zeigt auf seiner Webseite, wie man mit HTML5 und Javascript 3D-Videos anzeigen kann. Ohne Plugin, läuft aber z.Zt. nur mit Opera-Browser.
Dort befinden sich auch weitere Seiten zum Multiview– und 3D-Video-Streaming.
2D-Video in 3D Umwandeln AviSynth
Wie in der c’t 6/10, S. 116 sowie im Sonderheft Multimedia vorgestellt, lässt sich mit Hilfe eines einfachen Avisynth-Skriptes ein 3D-Video-Effekt aus einem 2D-Film simulieren.
Der Effekt basiert auf dem Pulfrich-Effekt.
Es handelt sich letztlich um eine optische Täuschung, die aber verblüffende Ergebnisse erzielen kann.
Anliegend eine speziell erstellte AviSynth-Version 2.5.8 MT inkl. der notwendigen Plugins MVTools und MT.
Beispielskripte finden sich nach der Installation unter %Programme%\AviSynth\Examples
Weitere Infos zu Avisynth hier.
Farbräume im Vergleich
Bruce Lindbloom zeigt auf seiner Seite mit anschaulichen Java-Applets, wie die CIE- und andere Farbräume im 3D-Raum aussehen.
Viele Spezialinfos!
Continue reading “Farbräume im Vergleich”
Abtastung und Quantisierung von Digitalen Bildern
Was ist ein Digitales Bild?
Jedes Video-Bild oder jeder Audio-Ton kann als Signal aufgefasst werden, d.h. als Funktion über physikalische Größen. Bei Bildern ergibt sich eine 2D-Funktion für jeden Ort des Bildes mit jeweils einem Wert für die Intensität des Bildes (Farbe/Helligkeit).
Das Signal kann auf eine eindimensionale Funktion über den Verlauf einer Bildzeile reduziert werden, das für jeden Ort der Zeile eine Helligkeit bzw. die Farbintensität angibt (siehe Video/TV-Signal). Die Grenzen liegen zwischen den Rändern des Bildes sowie dem maximalen Intensitätsbereich der Farbwerte.
In der Analogtechnik ist das Signal kontinuierlich sowohl im Orts- als auch Wertebereich, d.h. es existieren theoretisch unendlich viele Werte innerhalb der Intervalle.
Bei der Digitalisierung wird das Signal in eine feste Anzahl von Diskreten Zahlenwerten eingeteilt.
Die Einteilung der X-Achse wird als Abtastung, die des Wertebereiches (Y-Achse) als Quantisierung bezeichnet.
Beispiel für digitale HDTV-Bilder: Abtastung einer Zeile mit 1920 Spalten, Quantisierung der Farbwerte mit je 256 Stufen (8 Bit).