Dieses Programm erlaubt die Umwandlung, Skalierung, Komprimierung und Recodierung (fast) beliebiger Quell-Videodateiformate nach MP4. Als Ausgabe-Auflösungen sind die bei Streaming-Plattformen wie Youtube, Vimeo oder den Playout-Servern der Öffentlich-Rechtlichen Rundfunkanstalten üblichen Zielauflösungen im 16:9 Format auswählbar.
Nicht möglich sind damit das (Be-)Schneiden wenn das Bildschirmverhältnis nicht 16:9 beträgt und ebenso nicht das (Zu-)Schneiden bzw. das (Aus-)Schneiden von Filmsequenzen aus Video-Dateien.Software-Voraussetzungen (alle Open Source)
$ sudo apt install python3 ffmpeg
$ sudo pip3 install ffmpeg-python
wenn das heruntergeladene Programm im Verzeichnis Downloads liegt, muss diese Datei zunächst einmalig ausführbar gemacht werden, entweder im Terminal:
$ cd ~/Downloads
$ chmod +x video-umwandler.py
ein Start ist dann auch vom Terminal aus möglich mit:
$ cd ~/Downloads
$ ./video-umwandler.py
oder über Rechtslick > Eigenschaften im Reiter Zugriffsrechte ein Häkchen setzen vor ☑ Datei als Programm ausführen.
Anschließend kann über einen Doppelklick auf die Datei das Programm direkt gestartet werden.
pip install ffmpeg-pythonund die Eingabetaste drücken.
System | App- bzw Software-Beispiel |
---|---|
iOS/iPadOS |
z.B. Media Converter Flex
(kostenpflichtig, Videokonvertierung) * |
Android | * |
Windows, macOS, Linux |
Handbrake
(Open Source, Videokonvertierung), FFMPEG (Open Source, Codec-Framework und Komandozeilenprogramm), VLC (Open Source, Videoplayer und Videokonvertierung und Screencastaufnahme) Shotcut (Open Source, Videoschnitt und Videobearbeitung) |
auschließlich Windows | File Converter (Freeware, Audio- und Videokonvertierung) |
* Hier wird eine Suche im jeweiligen App-Store des Mobilbetriebssystemanbieters nach weiteren kostenfreien Werkzeugen empfohlen
Anleitungen zu den vielfältigen Werkzeugalternativen findet man dann mit den Suchbegriffskombinationen Anleitung Videos konvertieren nach mp4 [Programmname] [System] bzw. Anleitung Audio konvertieren nach mp3 [Programmname] [System].
Bei der Wahl eines Werkzeugs sollte u.a. auf die folgenden Punkte geachtet werden:
Schülerinnen und Schüler sollten dies vor dem Einsatz immer mit ihren Eltern besprechen.
Tipp: Falls man nachträglich viele bereits vorhandene Videodateien
speziell für den mobilen Gebrauch z.B. auf Wide 360p mit 640x360
herunterrendern und ggf. nach MP4 umwandeln möchte, so ist dies auch
per Stapelverarbeitung mit einem Skript denkbar.
Das folgende Beispiel enthält hierfür ein Shellskript für Linux und macOS.
Die Quell-Videodateien werden hierzu einfach alle in das Verzeichnis originaldateien abgelegt. Nach der Umwandlung liegen die erzeugten Ziel-Videodateien dann im Verzeichnis ausgabedateien.
Entsprechender Kommandozeilenbefehl (Bash) unter Linux für den eigentlichen Umwandlungsschritt, wie er auch von dem Python-Programm Video-Umwandler im Hintergrund durchgeführt wird:
$ ffmpeg -i "${infile}"\ -movflags faststart\ -c:v libx264\ -c:a aac\ -b:a 128k\ -s:v ${zielbreite}x${zielhoehe}\ "${outfile}.mp4"
Das menschliche Auge kann Bilder unterhalb einer Bildrate von etwa 14 Bildern pro Sekunde (frames per second, fps) gerade noch als Einzelbilder wahrnehmen. Wenn diese Bildrate überschritten wird, entsteht der Eindruck eines zunächst etwas "ruckeligen" Films. Ab einer Bildrate von etwa 24 Bildern entsteht ein flüssiger Eindruck.
Übliche Bildschirm-Seitenverhältnisse sind 4:3 (analoges Fernsehen) und 16:9 (digitaler Wide-Screen).
Das auf den drei Stäbchentypen in der Netzhaut beruhende additive Rot-Grün-Blau (RGB)-System konnte auf den vorhandenen alten Schwarz-Weiß (SW)-Fernsehern nicht verwendet werden, da Farbfilme dort sonst gar nicht angezeigt worden wären. Daher wurden zu der Helligkeitsinformation (Luminanz, Y) für SW einfach zusätzliche Farbinformationen (Chrominanz, Cr und Cb) hinzugefügt, die in Farbfernsehern dann beide verarbeitet wurden.
Ein Einzelbild hat u.a. die Eigenschaften Bildgröße, Farbtiefe und ggfs. Bildkompression bzw. Metadaten. Aus den entsprechenden Werten resultiert dann die Dateigröße.
Die ungefähre Bilddatengröße unkomprimierter Bilddateien errechnet
sich also wie folgt:
Die Metadaten im Dateianfang (Header) werden hier vernachlässigt.
Dateigröße = Anzahl der Pixel Breite x Anzahl der Pixel Höhe x Farbinformationen in Bits pro Pixel
Dateigröße = 720 px x 576 px x 30 bpp
Dateigröße = 12 441 600 b
Dateigröße ≈ 1,48 MB
Bei einer Einzelbildanzahl von 1500 (bei einer Bildrate von 25 fps)
pro Minute Film wären das (noch ohne Ton!) bereits etwa
2,2 GB Speicherplatzbedarf pro Filmminute! Bereits die Einzelbilder
müssen also unbedingt verkleinert (komprimiert) werden.
Es werden möglichst nur solche Daten entfernt, deren Fehlen wenig
oder gar nicht bemerkt wird.
z.B. JPEG für Pixelgrafik:
Viele Farbtöne werden verworfen, da Helligkeitsunterschiede stärker
wahrgenommen werden.
Auch werden die RGB Farbinformationen nach YCrCb umgerechnet;
z.B. MP3 für Audiodateien:
Nur diejenigen Töne werden nach Regeln der
Psychoakustik herausgefiltert, welche nur unterschwellig gehört werden.
Das Containerformat legt den Ort fest, an dem die eigentlichen Inhaltsdaten liegen, sowie die Art der jeweils spezifischen zulässigen Codecs. Im gleichen Containerformat können verschiedene Codecs vorliegen. Diese Information steht meist am Dateianfang (Header). Der Multiplexer trennt beim Abspielen die Video- und Audiodaten, der Demultiplexer führt sie wieder zusammen, etwa beim Umcodieren. Ein Codec (von coder und decoder) bezweichnet sowohl das jeweilige (Kompressions-/Dekompressions-) Verfahren als auch das dazu notwendige Programm.
Für Videocodecs werden meist folgende Video-Kompressionsverfahren kombiniert:
Bei modernen, stärkeren Kompressionsverfahren für hochauflösende Bilder, werden die Informationen oft erst beim Abspielen entpackt, s o dass die Anforderungen an die Rechnerleistung viel höher sind, als z.B. noch bei MPEG-2!
Moderne Webbrowser unterstützen mit dem HTML5 Standard das Abspielen geeigneter Audio- und Videoformate direkt im Browser. Leider werden noch nicht alle Formate von allen Browsern und auf allen Plattformen unterstützt.
Die größte Schnittmenge über alle Browser und Plattformen hinweg hat die Kombination:
Medientyp | Containerformat | Videocodec(s) | Audiocodec(s) |
---|---|---|---|
Audio | MP3 | --- | aac, lame |
Video | MP4 | h264 | aac |
Unter iOS/iPadOS bereiten die folgenden Container-Codec-Kombinationen häufig Schwierigkeiten, obwohl diese formal HTML5 fähig sind und sollten daher vermieden werden:
Medientyp | Containerformat | Videocodec(s) | Audiocodec(s) |
---|---|---|---|
Audio | WEBM | --- | opus |
Audio | OGG | --- | opus |
Audio | OGG | --- | vorbis (veraltet) |
Video | WEBM | VP8, VP9, h264 | opus |
Video | OGG | Theora (veraltet) | vorbis (veraltet) |
Gänzlich ungeeignet sind für den Einsatz im Browser:
Medientyp | Containerformat | Videocodec(s) | Audiocodec(s) |
---|---|---|---|
Audio | WAV | --- | nicht komprimierte PCM-Rohdaten |
Audio | AIFF | --- | Metainformation als ID3-Tag und nicht komprimierte PCM-Rohdaten |
Audio | M4A | --- | verschiedene |
Video | MP4 | HEVC | verschiedene |
Video | MOV | verschiedene | verschiedene |
Video | M4V | verschiedene | verschiedene |
Video | MJPEG | verschiedene | verschiedene |
Video | AVI | verschiedene | verschiedene |
Video | MPG | MPEG 2 | verschiedene |
Da das gleiche Containerformat meist mehrere unterschiedliche Dateiendungen erlaubt, ist eine eindeutige Zuordnung und Analyse des inneren Aufbaus einer Audio- oder Videodatei nur mit Hilfe eines entsprechenden Programms möglich (s. Werkzeuge).
Tipp: Mit dem bei FFmpeg enthaltenen Kommandozeilen-Werkzeug ffprobe können die Eigenschaften einer Videodatei analysiert werden, ohne diese zu verändern:
ffprobe beispielvideo.mp4
Auflösung | Breite × Höhe | Seitenverhältnis | Dateigröße pro Minute | geeignet für |
---|---|---|---|---|
mittelhoch (HD ready, 720p) | 1280 × 720 | 16:9 | ca. 30 MB | Filme, die nur einmal zentral geladen und z.B. über einen Beamer im Klassenraum gezeigt werden sollen, wie ein einem Kino |
niedrig (Wide 360p) | 640 × 360 | 16:9 | ca. 10 MB | Filme, die auf Mobilgeräten von jedem Nutzer individuell abgespielt werden |
Mit der Umwandlungsoption -movflags faststart wird im MP4 Container mit moov eine Art Inhaltsverzeichnis an den Anfang der Datei geschrieben. Dadurch kann das Abspielen im Browser direkt beginnen und es ist keine zusätzliche Browserabfrage zum Laden des Dateiendes notwendig.
Mit der Umwandlungsoption pix_fmt='yuv420p' wird ein nicht nur für iOS/iPadOS Geräten sondern auch für Android Geräte geeignetes Farbprofil beim Recodieren mit dem H264 Videocodec eingestellt. Hierdurch ist eine Wiedergabe auf allen Gerätetypen möglich und es wird ggfs. auch eine kleinere Dateigröße erzielt.
Bei manchen Containerformaten wie bspw. Matroska (MKV) können
in einer Videodatei zusätzliche Metadaten enthalten sein, wie
dies häufig bei
Bilddateien (Stichwort Exchangeable Image File EXIF) oder
Audiodateien (Stichwort ID3-Tags) der Fall ist. Dies können bspw.
von der Kamera oder einem Aufnahmeprogramm automatisch ergänzte
Informationen sein zu Ortsangaben (Geolocation),
Zeitstempel einer Aufnahme,
Benutzername, Inhaltsbeschreibungen, u.v.m.
Vor einer Veröffentlichung ist es daher ratsam, diese Metadaten
zur Kontrolle auszulesen bzw. diese zu bereinigen, sofern sie
nicht durch die Recodierung verloren gehen.
Ein Beispielaufruf könnte lauten:
ffmpeg -i video.mp4 -f ffmetadata metadaten_video.txt
Der Audio-Inhalt einer Video-Datei kann aus dieser einfach extrahiert und als neue MP3-Datei gespeichert werden.
ffmpeg -i video.mp4 -acodec libmp3lame -ab 192k audio.mp3
Falls man bspw. selbst einen Streamingserver einsetzt, um eigene
Video-Dateien automatisch auf diesem in verschiedene Zielauflösungen
zu bringen und anschließend möchte man z.B. eine davon wieder
herunterladen, so kann man den folgenden Befehl einsetzen.
Hierbei kann entweder automatisch die höchste zur Verfügung gestellte
Videoqualität heruntergeladen werden oder aus dem vom Streaming-Server
zur Verfügung gestellten Angebot ggfs. eine manuell festgelegte
selbst gewählt werden.
Vor einem Download von Filmen allgemein muss aber geklärt werden, ob
man ggfs. die Nutzungsrechte für den ggfs. privaten Gebrauch
oder aber Unterrichtseinsatz besitzt.
Allgemein liegen auf einem Streaming-Server die Video-Dateien üblicherweise schon fertig vorbereitet und dauerhaft in verschiedenen Auflösungen gespeichert vor. Der Player im Webbrowser lädt dann eine Playlist-Datei (typischerweise mit der Endung .m3u8). In dieser Datei sind dann typischerweise für verschiedene Bandbreiten wiederum weitere Playlist-Dateien für die verschiedenen Auflösungen verlinkt, welche schließlich auf Bruchstücke der Mediendateien "Chunks" verweisen. Diese Bruchstücke werden dann bei Bedarf an der entsprechenden Stelle im Medium beim Abspielen "gestreamt", d.h. die Video-Datei muss nicht komplett heruntergeladen und im Speicher vorgehalten werden, sondern es ist zu jedem Zeitpunkt immer nur ein bestimmter Ausschnitt der Medien-Datei aktiv im Player vorzuhalten. Wenn sich die Bandbreite beim Endnutzer ändert, kann sich die ausgelieferte Videoqualität dynamisch anpassen. Daher werden solche Verfahren auch als adaptives Streaming bezeichnet.
ffmpeg -i playlisturl.m3u8 -c copy -bsf:a aac_adtstoasc video.mp4
Mit dem folgenden Befehl kann ein Film in Einzelbilder zerlegt werden.
ffmpeg -i video.mp4 -r 1 -s 640x360 -f image2 video_zerlegt-%03d.jpg
Mit dem folgenden Befehl kann aus den Einzelbildern wieder ein Film erzeugt werden (natürlich ohne Ton).
ffmpeg -f image2 -i video_zerlegt-%03d.jpg -r 12 -s 640x360 video_zusammengesetzt.mp4
Eine WAV-Datei kann mit dem folgenden Befehl nach MP3 konvertiert werden. Die Audio-Bitrate in kbit/s ergibt sich aus einem Kompromiss aus benötigtem Speicherbedarf und Tonqualität.
ffmpeg -i audio.wav -acodec libmp3lame -ab 128k audio.mp3
Die Bildwechselgeschwindigkeit - wie in alten Diaprojektoren mit kleinen Foto-Rahmen (daher Framerate) beträgt häufig 24, 25, 30, 48, 50 oder 60 Bilder pro Sekunde. Bei sehr hohen Frameraten von 60 fps sollte diese ggfs. halbiert werden auf 30 fps.
Wenn die Video-Datei keine personenbezogenen Daten enthält und darüber hinaus auch urheberrechtlich unbedenklich ist, könnten Lehrkräfte mit einem eigenen Account diese in einen Streaming-Dienst wie bspw. Youtube oder Vimeo hochladen und dort die Umandlung vornehmen.
Falls der oben beschriebene Weg gewählt wird, eine - im Einzelfall möglichst kleine - Video-Datei direkt in die eigene Lernplattform oder einen schulischen Cloudspeicher hochzuladen, so benötigen viele davon dort in der Summe immer noch viel Speicherplatz und während der Übertragung auch Bandbreite, was ohne Einsatzes eines Content-Delivery-Networks (CDN) möglicherweise einen Engpass darstellt.
Falls hingegen ein externer Streaming-Dienst direkt zum Ausspielen der Videos genutzt wird, tritt das Problem auf, dass Schülerinnen und Schüler als Nutzende beim Abruf mindestens ihre IP-Adresse, je nach Cookie-Einstellungen und Anmeldezustand bei verschiedenen Online-Diensten im Browser aber noch weitere personenbezogene Daten übermitteln.
Ein denkbarer Lösungansatz für dieses Dilemma wäre ein von den Ländern
oder dem Bund für den schulischen Bereich bereitgestellter
Video-Streaming-Server, der
entsprechend Datenschutz freundliche Einstellungen und
angepasste Nutzungsbedingungen umsetzt und ggfs. an die
Identitätsmanagement-Systeme der Bildungsplattformen der verschiedenen
Länder angeschlossen werden könnte.
Leider existiert zumindest derzeit kein entsprechendes Angebot.