Ich habe eine Datei mit einer Auflösung von 3840 x 1632, aber mein Fernseher streckt das Bild vertikal, um alle 2160 Pixel Höhe auszufüllen. Ist es möglich, ffmpeg zu verwenden, um eine leere / schwarze Höhe hinzuzufügen, während die Video- und Audioqualität erhalten bleibt?
Versucht, dies zu tun, was zu funktionieren schien (dauerte ungefähr 2 Stunden, die gleiche Länge wie das Video), aber die Dateigröße/Videoqualität wurde stark reduziert:
ffmpeg -i input.mkv -filter:v "pad=3840:2160:0:280" -c:a copy my_output_video.mkv
Gibt es einen Schalter, um zu sagen "alles andere bleibt gleich"?
Danke schön!
Sie müssen die Codierungsparameter manuell festlegen.
ffmpeg -i input.mkv -filter:v "pad=3840:2160:0:280,setsar=1" -crf 18 -preset faster -c:a copy my_output_video.mkv
Die CRF-Option legt den Kompromiss zwischen Größe und Qualität fest. Niedrigere Werte erzeugen eine bessere Qualität, aber größere Dateien. Die Voreinstellung erhöht die Geschwindigkeit, aber bei gleicher Qualität wird die Dateigröße größer.
Der Setsar-Filter wurde als Vorsichtsmaßnahme hinzugefügt, falls Ihr Player die in der Datei gespeicherte SAR liest und das Video basierend auf diesem Wert dehnt.
Sie können Transformationen mit -c:v libx264 -crf 0
X264 im verlustfreien Modus durchführen, in den es mit eintritt -crf 0
. Sie haben eine echte verlustfreie Videocodierung implementiert, dies ist nicht allgemein bekannt - aber es funktioniert perfekt.
Ich benutze es die ganze Zeit.
Seien Sie bereit - es braucht GBs - besonders für Videos aus dem wirklichen Leben (keine Grafiken usw.)
Bildschirmaufzeichnung für Programme und Grafiken in -crf 0
- ist perfekt - es komprimiert sie wirklich großartig und verbraucht relativ wenig CPU-Leistung.
Sie können auch die verwendete Komprimierungskomplexität mit den Voreinstellungen ( fast
, veryslow
... usw.) steuern. Und Sie können auch verlustfrei in komprimierter verlustfrei rekomprimieren.
Alles für verlustfrei ist das gleiche wie für alle x264, außer dass es wirklich verlustfrei ist.
ffmpeg -i input.mkv -filter:v "pad=3840:2160:0:280,setsar=1" -c:a copy -c:v libx265 -x265-params lossless=1 my_output_video.mkv
----------111111111----------------2222-3333-4-555----------------------------------------------------------6666666666666666666
Legend
1 - input filename
2 - Target X dimension
3 - Target Y
4 - Bar's target X pos. Best: Floor( (Target X - Current X) / 2) . If the value is 0, no vertical baps will be present.
5 - Bar's target Y pos. Best: Floor( (Target Y - Current Y) / 2) . If the value is 0, no horizontal baps will be present.
6 - output filename
Notes
-c:a copy is to maintain lossless-ness
-x265-params lossless=1 option is for lossless encoding. Adding -crf 0 is not required.
-c:v libx265 - added to reduce output video quality while maintaining lossless-ness
Floor() - means to floor DOWN where applicable (ideally, no non-integer calculations occur)
Mein Beispielbefehl zum Hinzufügen von Balken von 1660 x 780 bis 1920 x 1080,
ffmpeg -i input.mp4 -filter:v "pad=1920:1080:130:150,setsar=1" -crf 0 -c:v libx265 -x265-params lossless=1 my_output_video.mp4
Gyan
crf/qp 0
erforderlich ist.Anton Latucha