All posts by lietz

Video-Konvertierung mit FFMPEG

FFmpeg ist eine Sammlung von OpenSource-Software-Tools zum Konvertieren von Digitalem Video- und Audiomaterial in verschiedene Codec- und Containerformate. 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 GCC-Compiler zur Verfügung.

Achtung!

Der Versionsstand verschiedener ffmpeg-Versionen ist sehr unterschiedlich. Es sollte eine Version ab mind. 2012 oder 2013 eingesetzt werden, da erst damit korrekte h264/mp4-Files erzeugt werden können. Mit älteren Versionen wurde standardmäßig “MPEG4 V.1” erzeugt, das nicht kompatibel zu iPhone, Flash oder HTML5 ist. Grund: der File-Container ist MP4, auch “ISO File Format” (ISOFF) genannt. In dem Container wird aber das codierte Videoformat “MPEG4 Video” gespeichert (Codec).
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

  • Skalierung

    Option “-s WIDTHxHEIGHT”

    Beispiel:

    ffmpeg -i input.avi -s 640x480 output.mp4

  • Crop (Abschneiden/Balken entfernen)


    ffmpeg -i INFILE -vf crop=640:360:0:60 ... OUTFILE

    crop : 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 ... OUTFILE

    pad : 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 Resultats

    Software-Download

    Weitere Links:

  • Hier findet sich eine lauffähige Version für Windows. (Stand Mai 2013)
  • ffmpeg-Homepage
  • Aktuelle Win32-Builds
  • 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

    Neues Master-Wahlfach “Ausgewählte Themen der Medienproduktion”

    Wahlpflicht-Veranstaltung im Master SomSem2011
    von Prof. Dr. Jürgen Lohr und Dipl. Ing. Oliver Lietz
    Ausgewählte Themen der Videoproduktion, Streaming, 3D und Multiview
    – Entwicklung von AV-Streaming und Media Services
    – Stereoskopie & Multiview, HDTV, Audio-/Video-Streaming, Audio-Surround
    – Programmierung: Bildverarbeitung mit HTML, Directshow , C++, Plugins
    1. Dozenten:
    VL & Ü: Jürgen Lohr (2SWS)
    VL & Ü: Oliver Lietz (2SWS)

    Wichtige Hinweise für Teilnehmer/innen:

    Bitte bei Moodle anmelden:

    http://lms.beuth-hochschule.de/moodle/course/view.php?id=3152

    Infos:


    Das Fernsehen und Radio sind einen starken Wandel der Medien unterworfen. Neben der Interaktion und Personalisierung kommen auch neue Medienformen über das internet zu den Kunden. Neben den neuen medialen Produkten HDTV und Surround werden in Zukunft Stereoskopie, Multiview und interaktive Medien Einzug in die Publikationslandschaft erhalten.

    In der Lehrveranstaltung werden spezielle Themen der Videoproduktion für professionelle Broadcast- und Streaming-Szenarien behandelt. Media-Konvertierungstools bis zur Software-Entwicklung mit verschiedenen Entwicklungsplattformen (C+ /C#, HTML5, …) werden Tools und Libarys für die digitale AV-Produktion angesprochen.

    Am Rande wird ein betriebliches Konzept über ein Szenario im Web-TV erarbeitet. Aus Sicht eines Produktanbieter von IP-TV-Angeboten werden Kosten (u. a Server, Netz-Transport) und Einnahme (u.a. Abonement) bestimmt.

    Ziele und Inhalte der Lehrveranstaltung:
    • File- und Streaming-basierte Workflows bei der Videoproduktion
    • Aufzeichnung, Offline und Live Streaming
    • Stereoskopie & Multiview, HDTV, Audio-Surround
    • Distribution (Codecs, Streaming,, Formate)
    • Szenarien, Produktmanagment, Aufwände
    • Produktionsprozesse: Automation, Formatkonvertierung
    • Programmierung: Bildverarbeitung, Multimedia-APIs, Directshow, C++, Plugins, XML-Strukturen
    Projekte
    • Innovative Contentproduktion: HD, MV, 3D, Podcast
    • Einsatz für Event-Aufzeichnung IFA TecWatch und Media Streaming
    • IFA-Vorbereitungs- und Durchführung
    • Berichterstattung IFA (HDTV, 3D): Jounalistik und Gestaltung
    • Geräte/Übertragung/Ausgabe: Mobile, PC, Broadcast, Kino, Filebasierte Systeme
    • Einbindung in Hochschulplattformen (z.B. Beuth-Box)

    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

    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.