
Ich habe jede Menge Videos mit meinem Telefon aufgenommen und sie sind angesichts ihrer Länge ziemlich umfangreich (z. B. ist ein 3-minütiges Video bei 1920 x 1080 über 400 MB groß).
Ich nehme an, das liegt daran, dass das Telefon Akkulaufzeit und Qualität dem Speicherplatz vorzieht. Ich dachte mir also, ich könnte sie durch Avidemux laufen lassen, um sie neu zu kodieren und ihre Größe zu reduzieren, ohne dabei zu sehr an Qualität einzubüßen. Mir ist klar, dass eine gewisse Verschlechterung unvermeidlich ist. Aber da es so viel Spielraum für Komprimierung gibt, denke ich, dass es möglich sein sollte, eine Menge zu vermeiden.wahrnehmbarDegradierung.
Die Videos sind in H264/AAC in einem MP4-Container kodiert. Ich kann den Ton einfach direkt in Avidemux kopieren. Aber wie kann ich einige ungefähre Werte für den H264-Encoder ermitteln, um die Qualität des Videos beizubehalten? Ich glaube nicht, dass das H264-Format Informationen über seine Eingabeparameter speichert. Es ist möglich, eine Qualitätsstufe zu wählen, die die Dateigröße völlig aufbläht, ohne dass sich etwas ändert, und es ist auch möglich, eine Qualitätsstufe zu wählen, die das Video schrecklich macht. Gibt es eine Möglichkeit, die Eingabe zu analysieren, um einen „Sweet Spot“ zu finden, an dem die Videogröße reduziert wird, ohne die Qualität zu sehr zu beeinträchtigen?
Ich bin mir bewusst, dass diese Frage ein gewisses Maß an Subjektivität aufweist. Was würdeICHals „wahrnehmbare“ Verschlechterung betrachten? Ist es jedoch möglich, einen ungefähren Bereich für einige grundlegende Parameter festzulegen, wenn man bedenkt, dass Video-Encoder traditionell nach Wahrnehmungsqualitäten parametrisiert werden?
Antwort1
Es gibt mehrere Befehlszeilen- oder GUI-Tools, die einige der vereinfachten Kodierungsparameter eines H264-Videos anzeigen, z. B. ffmpeg
oder mediainfo
:
$ mediainfo myvideo.mp4
[... look for the "Video" section ...]
Format profile : High@L4
Bit rate : 17.0 Mbps
$ ffprobe -show_streams myvideo.mp4
[... look for a [STREAM] header followed by codec_type=video ...]
profile=High
level=40
bit_rate=16996359
Beachten Sie die Parameter profile
und level
(in ffmpeg
). Machen Sie sich keine Sorgen über die Bitrate, sie sagt Ihnen nichts, was die Dateigröße nicht sagt. Ichdenkendass die Ausgabe von level
in das 10-fache des tatsächlichen Werts beträgt (d. h. bedeutet Ebene 4, bedeutet 4,1 usw.).ffmpeg
40
41
Avidemux ermöglicht Ihnen die Verwendung vereinfachter Einstellungen, bei denen Sie diese festlegen und die feineren Einstellungen auf den Standardeinstellungen von Avidemux belassen können.
Ich dachte, das wären die entsprechenden Einstellungen:
- Erweiterte Konfiguration verwendenist deaktiviert.
- Profilist hoch.
- IDC-Stufeist 4.
Mit einem langsamerenVorgabeDer Wert erhöht die Qualität innerhalb dieser Parameter (bis zu einem gewissen Punkt).
Sie können auch die Zwei-Pass-Kodierung verwenden, um die Dateigröße weiter zu reduzieren. Ich kenne keine gute Methode, um eine angemessene Dateigröße vorherzusagen, aber eine gute durchschnittliche Zwei-Pass-Bitrate für 1920 × 1080 liegt zwischen 6 und 8 Mbit/s. Zielen Sie nicht auf die ursprüngliche Dateigrößeoder Bitrate: Sie erhalten am Ende einfach eine Datei derselben Größe.
In meinem Fall halbierte sich die Dateigröße durch einfaches Single-Pass-Encoding mit Qualitätsstufe 20 (Avidemux-Standard), und ein Vergleich mit Bino und Kinovea zeigte (für mich) keinen Unterschied, selbst bei Bildern mit Bewegungsunschärfe oder hohem Kontrast. Durch das Two-Pass-Encoding mit 7 Mbit/s (was das Ergebnis des Single-Pass-Encodings war) wurde dies auf 40 % reduziert.