Inhaltsverzeichnis
1. Was ist x264vfw?
2. Wann soll ich x264vfw benutzen?
3. Texttutorial
4. Hinweise/FAQ
5. Zusatzinfos
6. Schlusswort
7. Changelog
1. Was ist x264vfw?
x264vfw ist ein Encoder, also ein Programm welches Videos in ein bestimmtes Format umschreibt und es in diesem Fall auch komprimiert.
Anders als die schon mitgelieferten Encoder in Videoschnittprogrammen, ist x264 der bisher effizienteste verlustbehaftet komprimierende Encoder. Effizienter bedeutet: Er erzeugt die kleinsten Dateien bei bestmöglicher Qualität und das auch noch schneller (dazu mehr unter Punkt 5: Zusatzinfos).
Und dank der vfw-Schnittstelle (Video-for-Windows) lässt sich dieser Encoder in fast jedem Videoschnittprogramm einbauen.
2. Wann soll ich x264vfw benutzen?
Dafür kannst du ganz einfach diese Checkliste durchgehen:
1. Hat mein Programm x264 schon von Haus aus als Encoder? (MeGUI, TMPEnc,...)
→ Dann hast du schon das bestmögliche an Effizienz.
2. Kann mein Programm auf Frameserver zugreifen? (Produkte von Adobe und Sony)
→ Dann solltest du dir ein Tutorial zum DebugMode Frameserver anschauen.
3. Mein Programm kann weder Möglichkeit 1 noch 2 (Produkte von Magix, Camtasia, ...)
→ Dann bist du hier richtig
3. Texttutorial
Downloads (3 Programme)
x264vfw: https://sourceforge.net/projects/x264vfw/
→ Sowohl 32 als auch 64 bit Version installieren!
MeGUI: https://sourceforge.net/projects/megui/
→ Folgendermaßen einstellen:
- Options ➤ Settings ➤ Default Output Directory ➥ Hier gebt ihr euer Verzeichnis ein, wo später die Audiodatei geschrieben wird.
- Options ➤ Settings ➤ Extra Configuration ➤ Auto Update ➤ Use development Update Server
- Options ➤ Update ➤ Update ➥ Lasst MeGUI jetzt updaten und schließt es danach.
Mediainfo: https://mediaarea.net/de/MediaInfo
→ Folgendermaßen einstellen:
- Mediainfo öffnen ➤ Sprache: Deutsch ➤ Ansicht: Text ➤ bestätigen und schließen
Einstellung des Videoschnittprogramms
Jedes Videoschnittprogramm ist etwas anders, aber dennoch gleich aufgebaut. Ich werde deshalb die Schritte allgemein erklären, damit sie sich auf jedes Programm anwenden lassen.
Ihr findet zu Magix die genauen Einstellungen unter Punkt 5 Zusatzinfos.
- Bevor ihr überhaupt das Video ins Schnittprogramm reinladet, klickt vorher mit Rechtsklick auf das Video ➤ Mediainfo ➤ Bildwiederholungsrate/FPS ➥ Merkt euch die genaue FPS vom Video und gebt sie sowohl beim Import/Einlesen als auch beim Export an (WICHTIG: 30fps ≠ 29.997fps / Richtig: 30fps = 30fps).
- Falls in der Mediainfo etwas von einer Variablen Bildwiederholungsrate oder einer minimalen oder maximalen Bildwiederholungsrate steht, dann schreibt das bitte in diesen Thread rein, denn euer Video ist in diesem Zustand nicht für die Weiterbearbeitung geeignet.
- Sucht jetzt in den Export/Render Optionen eures Programmes nach "Rendern/Export/Encode als AVI".
- WICHTIG! x264vfw funktioniert nicht mit Batchdateien/Stapelverarbeitung.
- Dort gebt ihr jetzt die genaue FPS Rate ein.
- Außerdem ist hier irgendwo eine Eingabe für den Speicherordner und den Dateinamen. Stellt euch dafür einen Ordner ein den ihr später wiederfindet und nennt die Datei "audio.AVI" (WICHTIG!!)
- Wenn ihr das Video für bessere Qualität auf Youtube skalieren wollt (2048x1152, 3200x1800) dann solltet ihr hier die Auflösung ändern.
- Sucht nach den Einstellungen für den Audioencode und wählt PCM (intern) / Wave 16bit ➥ 4410hz reichen als Frequenz.
- Sucht nach den Einstellungen für den Videocodec und wählt "x264vfw - H.264/MPEG-4 AVC codec".
Einstellung von x264vfw
Basiseinstellungen (auf die markierten Sachen werde ich später noch eingehen):
Die Standard Command line zum reinkopieren
➥ WICHTIG: Die FPS entsprechen genau eurer originalen FPS, die ihr schon beim Import und beim Export angegeben habt. Ändert diese daher immer je nach Video ab.
➥ min-keyint entspricht dem FPS Wert, keyint entspricht dem 10fachen FPS Wert (Also 60 FPS = --keyint 600 --min-keyint 60).
Output file
➥ Hier gebt ihr den Ordner und den Namen an, wo euer Video hin exportiert wird. Achtet darauf, dass ihr die Datei "video.h264" benennt und, dass sie im selben Ordner wie die "audio.AVI" liegt.
Einstellung von Qualität, Dateigröße und Codierungsgeschwindigkeit
Zusätzlich zu den Standardeinstellungen geht es jetzt um die Feinkonfiguration.
In der gesamten Videokompression gibt es 3 Faktoren die sich gegenseitig beeinflussen und die ihr selber festlegen könnt.
1. Qualität
2. Dateigröße
3. Codierungszeit/Geschwindigkeit
Welche ihr davon bevorzugt, ist eure Entscheidung. Dennoch kann eure Hardware die Faktoren limitieren.
➥ Die Leistung eures PCs (insbesondere CPU und RAM) können die Codierungszeit stark in die Länge ziehen, weshalb man zu Ungunsten der Dateigröße die Geschwindigkeit erhöhen könnte.
➥ Die Leistung eurer Internetleitung bestimmt letztlich die maximale Dateigröße, die ihr euch erlauben könnt, weswegen man zu Ungunsten der Geschwindigkeit die Dateigröße verringern könnte.
➥ Ist sowohl eure Internetleitung als auch euer PC schlecht, dann müsst ihr sowohl bei der Qualität als auch bei der Dateigröße Abstriche machen
Zusammengefasst lässt sich sagen: Von den Faktoren Qualität, Dateigröße und Zeit könnt ihr euch zwei auswählen und den Flaschenhals (CPU=Geschwindigkeit, Internet=Dateigröße) rauslassen und so die Codierungsstrategie wählen.
Bei x264 kann man mit dem CRF (Constant Rate Fakor) und dem Preset die Faktoren beeinflussen.
➥ Der CRF Wert bestimmt die Qualität, also wie viel Bitrate durchschnittlich an das Video gegeben wird. Je niedriger der Wert, desto besser die Qualität (zwischen 0 und 50).
➥ Das Preset bestimmt die Codierungsgenauigkeit, also wie viel Zeit sich der Encoder für das Video nimmt und nach Komprimierbarkeit sucht. Je schneller das Preset, desto höher die Geschwindigkeit, aber desto höher die benötigte Bitrate pro Qualität. Es kann also die Qualität gesenkt werden oder die Dateigröße steigen.
PC (CPU) ist der Flaschenhals
➤ Ungefähre System Spezifikationen: Internetleitung über 10.000 kbit/s, CPU älter als 5 Jahre, im i5 oder i3 Bereich
➤ CRF: 23-18, Preset: Medium oder Fast
➥ Ergebnis: Größere Datei, schneller Encode, gute Qualität
Internet (Upload) ist der Flaschenhals
➤ Ungefähre System Spezifikationen: Internetleitung unter 10.000 kbit/s, CPU jünger als 5 Jahre, im i5 oder i7 Bereich
➤ CRF: 23-18, Preset: Slow
➤ OPTIONAL (wenn die Datei noch zu groß wird): Zusätzliche Befehle in der Commandline: --bframes 5 --partitions all
➥ Ergebnis: Kleinere Datei, langsamerer Encode, gute Qualität
Sowohl das Internet, als auch die CPU sind schlecht
➤ Ungefähre System Spezifikationen: Internetleitung unter 10.000 kbit/s, CPU älter als 5 Jahre, im i5 oder i3 Bereich
➤ CRF: 25-30, Preset: Medium
➤ OPTIONAL: Zusätzliche Befehle in der Commandline: --keyint infinite --min-keyint 1
➥ Ergebnis: Kleinere Datei, schnellerer Encode, schlechtere Qualität
Farbraum
Mit x264vfw könnt ihr grundsätzlich im YUV 4:2:0 oder RGB Farbraum encodieren.
➤ Wisst ihr nichts mit den Begriffen anzufangen oder habt ihr eine YUV 4:2:0 Aufnahme (Standard) und ihr möchtet auch in YUV 4:2:0 hochladen, dann lasst die Einstellung wie in den Basiseinstellungen.
➤ Habt ihr eine RGB Aufnahme und ihr möchtet in YUV 4:4:4 hochladen, dann stellt die Zeile mit gelber Umrandung auf "Keep input colorspace" um und löscht die Befehle "--range tv --colorprim bt709 --transfer bt709 --colormatrix bt709" aus der Commandline.
Eine RGB Ausgabe bedeutet bessere Qualität und größere Datei bei gleicher Geschwindigkeit, lohnt sich aber nur, wenn die Aufnahme auch in RGB vorliegt.
Weitere Informationen zu dem Thema unter Punkt 6: Zusatzinfos.
Abschluss
Die Einstellungen die ihr vorgenommen habt, bleiben für alle späteren Videos, ihr müsst es also nur einmal einstellen.
Achtet hingegen jedes mal auf den richtigen FPS Wert und überprüft sicherheitshalber eure aufgenommen Videos vorher mit Mediainfo.
Wenn alles fertig ist, bestätigt ihr die Angaben und startet den Encode.
x264vfw wird jetzt 2 Dateien erstellen:
➥ Eine video.h264 Datei, in der sich euer RAW-Video befindet. Der Speicherort ist in der x264vfw Konfiguration angegeben.
➥ Eine audio.AVI Datei mit einem leeren Video und eurer unkomprimierten Audio-Datei.
➥ Beide Dateien sollten im selben Ordner sein.
➤ Erstellt nun eine neue Datei im Ordner der video.h264 und audio.AVI Dateien (Rechtsklick ➤ Neu ➤ Textdokument) und öffnet diese mit dem Text-Editor (Doppelklick).
➤ Kopiert diesen Text in den Editor rein:
%_ffmpeg_% -i "%_iaudio_%" -c:a copy -map 0:a -f wav - | %_flac_% --ignore-chunk-sizes --best - -f -o "%_iaudio_:~0,-4%.flac"
➤ Stellt in Zeile 2,3 und 4 den Speicherplatz von MeGUI genau ein.
➥ Ändert dafür ggf. das Festplattenkürzel: G, E, C, ...
➥ Fügt ggf. einen oder mehrere Ordner hinzu, wenn MeGUI sich dort drin befinden sollte: "G:\Ordner1\Ordner2\MeGUI\tools\flac\flac.exe"
➤ Speichert die Datei: Datei ➤ Speichern unter... ➤ Dateityp: Alle Dateien (*) ➤ Dateiname: Merge.bat ➤ Speichern
➤ Führt die Batch-Datei aus. Es öffnet sich die CMD und euer fertiges Video wird erstellt. Hat die CMD alle Befehle fehlerfrei ausgeführt könnt ihr die CMD schließen.
➥ Für jedes weitere Video müsst ihr nur noch die Batchdatei starten ohne sie zu konfigurieren, solange ihr die Namen und den Speicherort der video.h264 und audio.AVI nicht ändert.
Fertig
4. Hinweise/FAQ
➤ Die fertigen .mkv Videos können problemlos auf Youtube hochgeladen werden, sind aber schwierig abzuspielen oder wieder in Videoschnittprogramme einzulesen.
- Zum Abspielen nehmt am besten den MPC-HC Player: https://mpc-hc.org/ Habt ihr die Commands "--keyint infinite --min-keyint 1" dann kann nur zu wenigen Frames gespult werden.
- Wollt ihr das Video erneut in ein Videoschnittprogramm einlesen (z.B. für ein Best-of), dann geht nach diesem Tutorial vor: Wie kann ich jedes Format in Videoschnittprogramme importieren.
➤ Sollte das aufgenommene Video ein variable Framerate haben (maximale/minimale FPS), dann postet die Mediainfo hier im Thread und wir versuchen das Video zu retten und zukünftige VFR Videos zu vermeiden.
➤ Sollte das fertige Video asynchron sein, dann überprüft genau ob an allen 3 Stellen (Import ins Programm, Export/Render Einstellungen, x264vfw Konfiguration) die FPS gleich sind und mit der aufgenommenen Datei übereinstimmt (Mediainfo prüfen!) Wenn ja, dann postet die Mediainfo der aufgenommenen Datei und der fertigen, asynchronen Datei hier im Thread.
➤ Sollte ein Link nicht mehr funktionieren, dann bitte eine Nachricht hinterlassen
5. Zusatzinfos
➤ Programmeinstellungen für Magix
1. | |
2. | |
3. Erweitert | |
4. Audiokompression |
➤ Vergleich x264 mit gängigen anderen Encodern, die von Videoschnittprogrammen verwendet werden
➤ RGB (YUV 4:4:4) und YUV 4:2:0
➤ Bedeutung der Commandozeilenbefehle
- aq-strength 1.25 = Reduziert Bandingeffekte
- colorprim bt709, transfer bt709, colormatrix bt709 = Festlegung der Farbmatrix auf BT.709
- range tv = Begrenzung der YUV-Farbtabelle auf 16-235
- keyint, min-Keyint = Begrenzung der I-Frames (Vollframes) zur Verringerung der Dateigröße zu Lasten der Spulbarkeit.
- B-Frames = Erhöhung der maximalen Anzahl von B-Frames zur Verringerung der Dateigröße zu Lasten der Encodingdauer
- Partitions all = Freischaltung einer kleineren Makroblockgröße zur Verringerung der Dateigröße bei komplexem Material zu Lasten der Encodingdauer
Schlusswort
Sooo... das ganze Tutorial sieht jetzt erstmal kompliziert aus, aber ich habe es versucht so simpel wie möglich zu halten und viele Fehlerquellen auszuschließen.
Auch wenn ihr für das erste Einstellen vielleicht eine halbe Stunde braucht, sind die nächsten Videos in nur ein paar Klicks fertig.
Der Mehraufwand von ca. 30 Sekunden pro Video wird durch die allgemein bessere Encodingzeit und der viel besseren Qualität locker aufgeholt.
Diese Methode lässt sich bei jedem Videoschnittprogramm anwenden und man sieht deutliche Unterschiede bei der Qualität und Dateigröße im Vergleich mit einem normal encodiertem Video.
Danke an @Sagaras und @RealLiVe für die allgemeine Idee und die vielen Hinweise zur Verbesserung
Bei Fragen zu Einstellungen, Problemen, Qualitätsverbesserungen oder Verbesserungsvorschlägen am Tutorial bitte hier im Thread schreiben
Mfg
GrandFiredust
Changelog
- 17.04.2015: Muxen in MP4, Audioencode mit NeroAAC, Weglassen des eigenen Muxen von x264vfw (.h264 statt .mkv)
- 18.04.2015: Kommandozeilenbefehle hinzugefügt
- 11.07.2015: Weitere Erklärungen von @Sagaras übernommen
- 14.05.2016: MyMP4BoxGUI als MP4 Muxer entfernt und durch MP4Box.cli ersetzt. MyMP4BoxGUI sollte nicht mehr verwendet werden, wegen verschiedenen Fehlern!
- 21.05.2016: Generalüberholung des gesamten Tutorials - VERSION 2.0
- Änderung des Layouts und Kürzung/Verbesserung des Textes und Auslagerung von zu komplexen Teilen
- Entfernung des Magix-spezifischen Tutorial-Grundgerüstes
- Entfernung von MKV Merge GUI, XMediaRecode und NeroAAC - Stattdessen MeGUIs Mkv Muxer und FLAC als Audio Codec.
- Einige Verbesserungen an den x264vfw Presets (insbesondere in Hinblick auf die GOP Länge)
- 08.06.2016 Ersetzen des manuellen Audioencodes und Muxings durch einen Batch-Vorgang. Hinzufügung von ffmpeg als Demuxer.
- 31.12.2016 FFmpeg Download entfernt und Batchdatei auf MeGUI internes FFmpeg umgestellt, danke an @HarleySkin