
Meine Canon 60D erstellt beim Aufnehmen von Videos MOV-Dateien und ich habe herausgefunden, dass der MOV-Container einen H264-Videostream und einen PCM-Audiostream hat.
Ich habe ffmpeg und GSpot verwendet, um einige meiner Videos anzusehen, und mir sind scheinbar ziemlich hohe Bitraten aufgefallen (22.000 kbps für 640 x 480, 45.000 für 1920 x 1080).
Ich möchte die Größe der Dateien reduzieren, aber die Qualität ziemlich hoch halten. Ich habe mit der einfachsten Methode herumgespielt, die mir eingefallen ist, nämlich die Bitrate zu reduzieren, und das hat das Ergebnis, das ich erwartet hatte: Die Bitrate wird halbiert, und die Dateigröße ist ungefähr halb so groß. Aber ich frage mich, ob es eine Möglichkeit gibt, eine „gute“ Zielbitrate zu bestimmen, oder ob es Sinn macht, eine variable Bitrate auszuprobieren.
Antwort1
Aber ich frage mich, ob es eine Möglichkeit gibt, eine „gute“ Zielbitrate zu bestimmen …
Eine gute Zielbitrate ist die Bitrate, die entweder:
- wird von dem Netzwerk unterstützt, aus dem Sie das Material streamen (z. B. ein 3G-Netzwerk, WLAN zu Hause usw.), was ziemlich einfach zu berechnen ist
- sieht gut ausDu, was ein sehr subjektives Maß ist
22 Mbit/s oder 45 Mbit/s sind für den durchschnittlichen Benutzer tatsächlich recht hoch, insbesondere für bereits komprimierte Videos wie h.264. Sie könnten die Bitrate durchaus auf einen „vernünftigen“ Wert reduzieren, immer im Hinblick darauf, wie viel Speicherkapazität Sie sich leisten können und wie viel Qualität Sie einbüßen möchten.
Sie können die Größe eines 1080p-Videos auch auf 720p ändern, wenn Sie die Größe nicht wirklich benötigen oder nicht über die nötigen Verarbeitungskapazitäten verfügen, um es zu bearbeiten.
… oder ob es überhaupt Sinn macht, variable Bitraten auszuprobieren
Der Sinn einer konstanten Bitrate besteht darin, sich an ein Streaming-Media-Szenario anzupassen, in dem es einen Engpass gibt, der die maximale Bitrate des übertragenen Videos begrenzt. In der heutigen Multimedia-Welt macht dies nicht mehr unbedingt Sinn.
Wenn Sie ein Video in eine konstante Anzahl von Bits pro Sekunde komprimieren, sagen Sie einem Encoder im Grunde, dass er immer die gleiche Anzahl von Bits verwenden soll, um denselben Zeitrahmen zu kodieren. Ist das der beste Ansatz? Wie Sie vielleicht schon erraten haben, ist es das nicht. Zitat aus demCRF-Leitfadenvon Handbrake (darauf komme ich später zurück):
Das Auge nimmt bei unbewegten Objekten mehr Details wahr als bei bewegten. Aus diesem Grund kann ein Videokompressor bei bewegten Objekten eine stärkere Komprimierung anwenden (mehr Details weglassen) und bei unbewegten Objekten eine geringere Komprimierung anwenden (mehr Details beibehalten). Subjektiv wird das Video eine höhere Qualität haben.
So dass estutEs ist sinnvoll, wann immer möglich eine variable Bitrate zu verwenden. Dadurch sieht das Video besser aus, selbst bei gleicher Dateigröße wie bei einem Video mit konstanter Bitrate.
Mehr noch, die meisten Encoder – der bekannteste istx264– führen oftsehrschlecht, wenn Sie ihnen sagen, dass sie eine konstante Bitrate verwenden sollen. Es ist besser, ihnen etwas mehr „Freiheit“ zu geben, was die Anzahl der Bits angeht, die sie für einen Frame ausgeben möchten. Schließlich ist das die Aufgabe des Encoders und nicht Ihre. Und das nennt man „konstante Qualität“.
Genug davon – was bedeutet das in der Praxis? Wenn Sie FFmpeg zum Kodieren von Videos verwenden, verwenden Sie bereits ein ausreichend gutes Tool. Wenn Sie jetzt auch x264 installiert haben und die neueste Version von beiden verwenden, verwenden Sie einen der besten Encoder, die derzeit kostenlos erhältlich sind. Anstatt mit einer festen Bitrate zu kodieren, lassen Sie x264 wählen, wie viel es ausgeben möchte. Verwenden Sie dazu dieKonstanter RatenfaktorMöglichkeit.
Im einfachsten Fall bedeutet das, einen Wert zwischen 17 und 23 einzustellen. Ich wähle MP4 als Ausgabecontainer anstelle von MOV, da esbessere Werkzeugefür Remultiplexing verfügbar:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
Je niedriger der Wert, desto besser die Qualität und desto größer die Ausgabe. Umgekehrt gilt: Je höher der Wert, desto geringer die Qualität. Gleichzeitig verringern Sie natürlich die benötigte durchschnittliche Bitrate. Überprüfen Sieder x264-Kodierungsleitfadenfür weitere Informationen zu ffmpeg
.
Ihre Aufgabe besteht nun darin, einen CRF-Wert zu finden, der:
- reduziert die Gesamtbitrate auf ein für Sie bezahlbares Maß
- reduziert die Qualität nicht zu sehr, so dass das Video immer noch gut aussieht
Ja, dies erfordert eine Menge Kodierung und Ausprobieren, aber das gehört zum Tagesgeschäft, wenn Sie Videos optimieren und kodieren.
Oh, und wenn Ihnen die Befehlszeile nicht gefällt,Handbremseist ein kostenloses, plattformübergreifendes Tool, das genau dasselbe tut. Es hat sogar einen CRF-Schieberegler:
Antwort2
Probieren Sie HandBrake CLI aus
Ich wollte einige MOV-Dateien verkleinern und hatte kein Interesse daran, alle Einzelheiten zu den Videooptionen zu erfahren.HandBrake CLIhabe ich verwendet. Die Voreinstellungen sind gut:
HandBrake bietet fest codierte, fabrikneue Voreinstellungen, die genau mit den integrierten Voreinstellungen in der MacGui identisch sind.
In meinem Fall hat das gut funktioniert:
HandBrakeCLI -i input.MOV -o output.mp4 --preset="Normal"
Ohne Voreinstellung war die Ausgabe sehr klein, aber nicht von guter Qualität. Die Voreinstellung „Normal“ sah für mich gut aus, aber Sie können mit andere verfügbare Voreinstellungen sehen HandBrakeCLI --preset-list
oder alle Optionen selbst anpassen, wenn Sie möchten.