FFMPEG / x264: Einzeldurchlauf: Wie erhöhen Sie die Startzeit-Bitraten?

500
Mark Gerolimatos

Wenn Sie den Single-Pass-Modus mit einer angegebenen VBV-Größe verwenden, wird die Bitrate von libx264 anfangs "gesackt", vermutlich aufgrund fehlender Beweise (oder sogar eines Fehlers). ( Dies ist eine ironische Antwort auf diese Frage, die sich mit zu hohen Anfangs-Bitraten mit Single-Pass-Kodierung ohne VBV-Spezifikation befasste. )

Weitere Informationen finden Sie in den Bitrate-Diagrammen unten: Beachten Sie den ursprünglichen Einbruch, gefolgt von einer Überkorrektur ("Hey, ich habe ein paar Bits übrig!"), Bevor eine Normalisierung durchgeführt wird. Beachten Sie, dass dies in der Lösung mit zwei Durchgängen korrigiert wird. Das Fehlen des anfänglichen I-Frames in diesen beiden Diagrammen ist wahrscheinlich ein Werkzeugfehler (PTS-Wert des anfänglichen I-Frames beträgt 0,15 Sekunden).

Dieser Effekt verhindert die parallele Verarbeitung eines langen Assets "aufteilen, codieren und neu zusammenstellen", da Sie zu Beginn jedes Segments einen Qualitätsschlag erhalten.

Dies kann durch die Dual-Pass-Codierung behoben werden. Dies ist eine inakzeptable Lösung für Live-Streams (obwohl bei Parallelisierung die Kosten für die Dual-Pass-Codierung entstehen könnten).

Ich hoffe auf zwei Lösungen: Jede Unterstützung wäre mehr als willkommen.

  1. Eine Single-Pass-Lösung, bei der der Encoder anfangs noch viele weitere Frames hält, bevor er eine Ausgabe erzeugt, wodurch der anfängliche Sandsack-Effekt verringert wird

  2. Eine Möglichkeit, eine begrenzte Zwei-Pass-Kodierung als "Pipe" durchzuführen: Die vollständige Zwei-Pass-Kodierung als Pipe ist natürlich nicht sinnlich, aber es sollte möglich sein, "Mikrodurchlässe" zu haben, bei denen die Pass-Feedback-Periode so ähnlich ist zweite. Dies ist viel weniger ideal als eine Lösung mit einem Durchgang, um einen solchen kurzen Effekt zu umgehen, wäre aber akzeptabel, wenn (1) unmöglich ist.

    • Single-Pass-Bitrate-Diagramm: Notieren Sie den anfänglichen "Sandsack-Dip". Generiert mit:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -bufsize 1000k onepass.mp4

FFMPEG / x264: Einzeldurchlauf: Wie erhöhen Sie die Startzeit-Bitraten?

  • Bitrate-Grafik für zwei Durchläufe: Dies ist das nahezu ideale Ergebnis. Beachten Sie, dass diese endgültige Form nicht erforderlich ist: Es reicht aus, den ursprünglichen Sandsack zu vermeiden. Generiert mit:

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 1 -f mp4 / dev / null

ffmpeg -i 1080-60fps.mp4 -vf "scale = 1200: 720" -b: v 1000k -pass 2 twopass.mp4

Bitrate-Grafik für zwei Durchläufe: Dies ist das erwartete Ergebnis

  • Ausschnitt des ersten Frames in der Single-Pass-Codierung

FFMPEG / x264: Einzeldurchlauf: Wie erhöhen Sie die Startzeit-Bitraten?

  • Ausschnitt des ersten Frames in der Zwei-Durchlauf-Kodierung

FFMPEG / x264: Einzeldurchlauf: Wie erhöhen Sie die Startzeit-Bitraten?

3
Haben Sie den CRF-Modus ausprobiert? Gyan vor 8 Jahren 0

0 Antworten auf die Frage