Welcher Ratensteuerungsalgorithmus bewahrt am besten schnelle Bewegungen?

Ich habe festgestellt, dass die folgenden Ratensteuerungsalgorithmen häufig beim Codieren moderner Videoformate wie h264, HEVC oder VP9 verwendet werden.

  • Bei einem konstanten Quantisierer ( -qpim Sinne von ffmpeg) werden alle Frames mit dem gleichen Kompressionsverhältnis codiert. Jedes Standbild, das man aus dem resultierenden Video extrahieren würde, sollte die gleiche visuelle Qualität haben, unabhängig davon, wie bewegungsintensiv oder komplex eine Szene ist, aus der es stammt.
  • Ein konstanter Ratenfaktor (der -crfParameter) wendet eine stärkere Komprimierung auf komplexe Teile an, um wiederum einfache Szenen relativ unkomprimiert zu lassen. Somit werden mehr Artefakte in z. B. sich schnell bewegende Aufnahmen eingeführt, was bei üblicher Anwendung für das menschliche Auge weniger wahrnehmbar ist, wodurch eine gute subjektive Qualität erreicht wird, während Dateigröße gespart wird.
  • Die dritte Variante besteht darin, mit zwei Durchgängen variabler Bitrate ( ) eine bestimmte Dateigröße anzuvisieren -b. Der erste Durchlauf sammelt Daten zu jedem Frame, sodass der zweite Durchlauf dann mehr Bits den Teilen des Videos zuweisen kann, deren Qualität sonst schwer zu halten ist. Dies macht effektiv das Gegenteil von CRF und weist komplexen Szenen mehr Qualität zu.

Ich suche nach einer Strategie, Videos zu archivieren, bei denen die bewegungslastigen Szenen eigentlich am wichtigsten sind, sogar angehalten, hineingezoomt und auf Details analysiert werden können, während langsame oder statische Inhalte weniger interessant sind. Habe ich Recht, auf VBR mit zwei Durchgängen zu schauen, um in dieser Hinsicht die beste Codierung zu erzielen?

Sollte mein Verständnis einer der oben genannten Methoden in erster Linie irreführend sein, fühlen Sie sich frei, mich zu korrigieren. Andere Hinweise zum Codieren von Bewegungen mit guter Qualität werden ebenfalls geschätzt. Ich bin mir besonders unsicher, ob die variable Bitrate mit zwei Durchgängen tatsächlich zu einer stärkeren Verteilung der Bitrate in Richtung schneller Szenen führt, und würde mich freuen, wenn jemand dies mit einer Dokumentation bestätigen könnte.

Antworten (1)

Hier ist mein Verständnis von FFMPEG, es gibt 4 Einstellungen für VQ, und sie sind "Codec", "crf", "preset" und "tune". Für den "Codec" schneidet FFMPEG auf VP9 nicht gut ab; die anderen sind H.264 und H.265. Für die „Melodie“ bevorzuge ich „Film“ für H.264 und „Grain“ für H.265. "crf" und "preset" können den VQ ausgezeichnet erhalten, aber es gibt Nachteile: lange Codierungszeit und große Dateigröße (Bitrate)

"Codec" kümmert sich um die Bitrate, H.265 hat eine kleinere Dateigröße (Bitrate), die das gleiche VQ-Niveau beibehält, aber eine längere Transcodierungszeit.

"crf" kümmert sich um die Quantisierung und die Bitrate, je kleiner crf, desto besser die Videoqualität, aber desto länger die Transkodierungszeit und desto größer die Dateigröße.

"preset" kümmert sich um die Bitrate, je langsamer das Preset, desto kleiner die Dateigröße (Bitrate), aber desto länger die Transkodierungszeit

Zurück zu Ihrem Szenario – dem schnellen Bewegungsvideo, wir beschäftigen uns mit den hochfrequenten Inhalten. Wir wollen keine blockartigen Bilder sehen; Daher benötigen wir eine höhere Bitrate, aber wir möchten eine angemessene Transcodierungszeit.

Daher bevorzuge ich H.265 "Codec" und "tune" Grain. Dann müssen wir „crf“ und „preset“ basierend auf den SSIM- und PSNR-Ergebnissen optimieren. Ich hatte einige Experimente mit dem MainConcept-Sample-Stream (1080p-Inhalt) durchgeführt.

  • Standard) Codec=h.264 crt=23, Voreinstellung=mittel, die Transkodierung dauerte 27,9s , die Bitrate= 3118kb/s , die SSIM= 0,994413 , PSNR= 48,644
  • Einstellung 1) Codec=H.265, crt=23, Preset=Medium, Tune=Grain, das Transcoding hat 130s gedauert, der Biss 3949kb/s, der SSIM=0.99487, PSNR=50.894298
  • Einstellung 2) Codec=H.265, crt=1, Preset=Medium, Tune=Grain, die Transkodierung dauerte 202,37s, Bitrate= 60883kb/s , SSIM= 0,999738 , PSNR= 65,497223
  • Einstellung 3) Codec=H.265, crt=23, Preset=slow, tune=grain, die Transcodierung dauerte 329,36 s, Bitrate= 4338 kb/s , SSIM= 0,9952 , PSNR= 51,452838

Einstellung 3) hat eine bessere VQ-Leistung mit akzeptablen Nachteilen, oder Sie können "crt" und "preset" weiter optimieren, um zu dem Punkt zu gelangen, der Ihre akzeptable Transcodierungszeit und die Bitratenergebnisse erreicht.

Viel Glück!

Die Zeit spielt keine Rolle: Ich kann alle Codierungen mit ausführen -preset veryslow. Ich schätze die Idee, die -tune grainschnelle Szenen tatsächlich verbessern könnte, und werde damit experimentieren. Außerdem würde mich sehr interessieren, wie ich eine variable Bitratencodierung konfigurieren kann, die in schnellen Szenen tatsächlich mehr Bitrate verteilt oder die Qualität anwählt. Vielleicht können Sie oder jemand anderes das näher erläutern.
Diese Befehle sind vbr, Streams ohne Bewegung – keine Bewegungsvektoren und Reste – niedrige Bitrate Streams mit Bewegung – ja Bewegungsvektoren und Reste – hohe Bitrate Nicht sicher, was Sie hier erreichen möchten?