ffmpeg Parameter | umwandeln von Videos zu H265

Markus.Tenne

Cadet 4th Year
Registriert
Nov. 2021
Beiträge
93
Hallo,

ich beschäftige mich gerade mit ffmpeg, welches unendlich viele Möglichkeiten bietet.

Ich möchte Videos in H265 umwandeln und in einen Matroska-Container (mkv) legen.

Mein bisheriger Parameterschnipsel sieht so aus:
Code:
-c:v libx265 -vtag hvc1 -preset medium -crf 25 -c:a copy -map 0

Parameter => CRF:
Standard für H265 soll 28 sein. Zur Sicherheit nehme ich 25, obwohl ich zwischen 28 und 25 visuell keinen Unterschied feststellen konnte.

Parameter => map 0:
Dies bewirkt, dass alle Tracks/Spuren übertragen werden. Ohne diesen Zusatz nimmt ffmpeg nur eine Video-, Audio- und Subtitelspur. Da bin ich anfänglich dran verzweifelt. Bei meinen Testvideos wurden nun mit -map 0 die Videospur, alle Audiospuren, alle Subtitelspuren und die Kapitelsprungmarken übertragen.

Im Grunde bin ich zufrieden. Ich sehe beim Ergebnis (bisher!) keinen Fehler.

Ich wollte hier aber mal bei euch nachfragen, ob ich noch einen Fehler bei den Parametern mache. Dieses "vtag hvc1" habe ich z.B. bisher nicht so ganz verstanden. Ich möchte vermeiden, dass ich einen Fehler zu spät selber bemerke und dann das ganze Umwandeln noch mal machen muss.
 
Code:
-tag:v hvc1

für apple

Code:
-movflags +faststart -tag:v hvc1
 
Ich mach das umwandeln per Handbrake zusätzlich mach ich noch ein leichtes entrauschen. Dabei wird dann so Farbrauschen gemindert was die Dateigröße nochmals ein stück verkleinert.
Statt crf nehm ich cq. cq (Constant Quality) ist ähnlich vbr
 
NameHere schrieb:
-movflags +faststart
Kannst das mal kurz ausführen, wofür das ist? Ich habe es in der Doku nicht wirklich verstanden.
Dort steht, dass das den Index an den Anfang verschiebt, aber es bei einer fragmentierten Ausgabe Probleme damit geben soll.
 
Markus.Tenne schrieb:
Dort steht, dass das den Index an den Anfang verschiebt, aber es bei einer fragmentierten Ausgabe Probleme damit geben soll.
fragmentierte Ausgabe = Chunks
Du möchtest aber aber keine Videos im Internet streamen, oder habe ich das falsch verstanden?
 
Diese -movflags +faststart Sache ist doch nur für MP4?
 
  • Gefällt mir
Reaktionen: jb_alvarado
@x264.exe das kann sein. Ich habe es aus meiner Batch rauskopiert. Es ist aber ein Apple Ding.
Ergänzung ()

@Markus.Tenne lass es einfach weg
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Markus.Tenne
du kannst dir mal fastflix anschauen. das tool benutzt ffmpeg im hintergrund und unter "raw commands" kannst du dir den ffmpeg-aufruf rauskopieren, wenn du das selber ausführen willst. ansonsten würde ich kein h265 mehr verwenden, svtav1 ist schnell genug beim encodieren und liefert bessere ergebnisse. medium + crf25 ist bei x265 schon eher grenzwertig.
 
am besten gar kein h265, aber wenn es fürs archivieren sein soll 10bit + slow + crf20/22
 
  • Gefällt mir
Reaktionen: Markus.Tenne, Eisenoxid und BFF
0x8100 schrieb:
Das müsste dann libsvtav1 sein.
Das würde ich gerne testen.
Welchen CRF empfiehlst du für den Anfang?
Weitere Parameter, die ich setzen sollte?
 
10bit, preset 5, crf 24 und "film-grain=8" als extra-option ist mein derzeitiges default.
 
  • Gefällt mir
Reaktionen: Markus.Tenne
Ich habe jetzt ein paar Tage mit H265 rumprobiert.

Bei Einstellungen für H265 wie:
0x8100 schrieb:
10bit + slow + crf20/22
bekomme ich recht große Dateien.

Dabei bin ich zu der Frage gekommen, ob wir in diesem Thread von jeweils anderen Voraussetzungen ausgehen.

Bei privaten Videos (z.B. Familienfeier, Kinder, Urlaub) macht eine relativ verlustfreie Qualität Sinn und da kommt es vielleicht auf ein paar Bytes mehr auch nicht an.

Ich möchte aber nur Spielfilme, die noch in H264 vorliegen, in H265 umwandeln um Platz zu sparen.

Im Moment habe ich folgenden Schnipsel:
Code:
-c:v libx265 -preset medium -crf 26 -pix_fmt yuv420p10le -c:a copy -map 0
Beim CRF soll der Standard bei ca. 28 sein. Daher bin ich zur Sicherheit auf -crf 26 runter.
Dieses -pix_fmt yuv420p10le habe ich nicht wirklich verstanden, soll aber 10Bit sein und wird in mehreren Threads zu dem Thema empfohlen.

Wie ist eure Meinung?

0x8100 schrieb:
10bit, preset 5, crf 24 und "film-grain=8" als extra-option ist mein derzeitiges default.
Mit libsvtav1 habe ich auch etwas rumgetestet. Bisher ganz vielversprechend, ich wandle gerade ein paar Testfiles um und schaue mir das dann auf verschiedenen Endgeräten (Android, Kodi, PC, usw.) an.
Im Moment möchte ich aber erst mal zur Sicherheit bei H265 bleiben.
 
Ich würde -pix_fmt yuv420p10le weg lassen. Das meiste wird eh 8bit sein und das hoch rechnen macht nicht viel Sinn, und wenn das Quellmaterial wirklich mal 10bit hat, übernimmt es x265 dann eh. CRF 20/22 macht in diesem Kontext auch nicht viel Sinn, finde ich. So lange das Bild auf einem großen Bildschirm noch gut ausschaut, reicht das doch völlig. Zum testen würde ich Szenen wählen die viele Details; schnell wechselnde Schnitte; möglich wenig Bewegungsunschärfe und keine Tiefeinunschärfe haben.
 
jb_alvarado schrieb:
Ich würde -pix_fmt yuv420p10le weg lassen.
10bit ist immer sinnvoll, da der codec damit effizienter arbeitet, auch mit 8bit content.
bei crf > 22 sieht man schnell artefakte, gerade bei ziemlich strukturarmen flächen. mal schauen, ob ich heute abend ein paar beispiele mache. crf28 sieht man aber sehr schnell.
 
  • Gefällt mir
Reaktionen: Markus.Tenne
0x8100 schrieb:
10bit ist immer sinnvoll, da der codec damit effizienter arbeitet, auch mit 8bit content.
Habe noch mal nachgelesen und du hast recht! Einziger Nachteil scheint wohl nur die Kompatibilität zu manchen Playern zu sein, aber wenn man im voraus weiß wie man die Dateien abspielt, ist das vernachlässigbar.

0x8100 schrieb:
mal schauen, ob ich heute abend ein paar beispiele mache.
Wäre interessant zu sehen.
 
Zu dem Thema 8Bit zu 10Bit kann ich nur beitragen, dass bei den gleichen Einstellungen (z.B. crf26) der 10Bit File minimal kleiner war (weniger als 1% => ca. 16MB bei 2399MB Gesamtgröße).
 
als quelle habe ich mal nach trailern gesucht und diesen genommen. dabei kam das hier raus (umgewandelt mit aktuellem ffmpeg, ohne ton):

original109 MB
x265 medium crf2242 MB
x265 medium crf2625,6 MB
x265 slow crf2247,7 MB
x265 slow crf2628,9 MB
svtav1 preset 3 crf 2442,3 MB

die dateigröße bei x265 mit crf26 sieht natürlich verführerisch aus, aber das kommt raus (bildausschnitt bei 0:11):

original
tile_org.png


x265 medium crf26
tile_265_med_26.png


x265 medium crf22
tile_265_med_22.png


x265 slow crf22
tile_265_slow_22.png


av1 preset3 crf24
tile_av1_24_3_grain8.png




x265 crf26 ist durchweg schlecht, erst crf22/slow kommt an av1 crf24 ran, ist dann aber wieder grösser. daher eigentlich die empfehlung zu slow + crf20 bei x265, aber das wird dann ein gutes stück grösser als av1. wenn man den unterschied zu medium + crf26 natürlich nicht sieht, kann man auch das nehmen. zum archivieren einer guten quelle würde ich persönlich das aber nicht nehmen.

was man in den bildern nicht sieht, ist, dass x265 bei niedrigen bitraten wie bei crf26 deutliche artefakte bei objekten mit starken kontrasten in bewegung nachzieht. eine person z.b. hat eine sichtbare halo um sichherum wenn sie sich vor dem hintergrund bewegt. finde ich sehr störend, wenn man einmal weiss, worauf man achten muss.

bei av1 kann man mit dem filmgrain spielen, die letzten beiden bilder sind einmal mit grain 8 und 16. wirkt beim abspielen natürlicher und nicht so weichgerechnet.
 

Anhänge

  • tile_265_slow_26.png
    tile_265_slow_26.png
    277,4 KB · Aufrufe: 70
  • 0:11_org.jpg
    0:11_org.jpg
    179,3 KB · Aufrufe: 72
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_med_22.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_med_22.jpg
    152,4 KB · Aufrufe: 66
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_med_26.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_med_26.jpg
    141,5 KB · Aufrufe: 70
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_slow_22.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_slow_22.jpg
    160,4 KB · Aufrufe: 68
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_slow_26.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-265_slow_26.jpg
    152,5 KB · Aufrufe: 71
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-av1_24_3_grain8.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-av1_24_3_grain8.jpg
    168,9 KB · Aufrufe: 71
  • 0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-av1_24_3_grain16.jpg
    0:11_THOR - LOVE AND THUNDER (2022) - Trailer [HD]-av1_24_3_grain16.jpg
    197 KB · Aufrufe: 74
  • Gefällt mir
Reaktionen: Markus.Tenne und jb_alvarado
Man muss schon darauf achten bewusst B-frames bzw. bei Encoder, die ohne B-frames arbeiten P-frames zu vergleichen. Ansonsten ist das alles wenig aussagekräftigt. Würde auch ein Video mit größerer Ausgangsbitrate nehmen. Jellyfish 40mbps zum Beispiel.
 
Zurück
Oben