FFMPEG / x264: Kann ich Pass 1 einer Codierungssitzung als Pass 2 für eine andere verwenden?
Frage:
Ist es legal, eine "Pass 1" -Codierung eines Quellvideos mit einer Auflösung / Bitrate als Eingabe für eine "Pass 2" -Codierung derselben Quelle bei einer anderen Auflösung / Bitrate zu verwenden? Ich habe es ausprobiert und seeeeeeems funktioniert, aber ich bin mir nicht sicher, ob es im allgemeinen Fall so ist: Das Stream-Profil (I / P / B-Frame-Auswahl usw.) sieht anders aus, als wenn Sie die gleichen Parameter für beide Durchläufe verwenden, aber auch sieht "gut genug" aus.
Ich bin an dem Punkt, an dem ich eine autoritative Antwort auf diese Frage brauche.
Warum in tarnation 1 würden Sie das tun?
Da die Codierung mit zwei Durchläufen einen irritierenden Fehler in FFMPEG (x264, wirklich) behebt, wird dieser wahrscheinlich nicht so schnell behoben: Je nach Geschwindigkeit Ihres Computers ist die erste Sekunde des Videos oft ungeeignet Bitrate. Dies kann sehr einfach mit einem Quellenstrom mit hoher Bitrate reproduziert werden, der auf einer sehr schnellen Maschine (z. B. einer EC2-c4.8xlarge ) in eine niedrige Bitrate umcodiert wird . Ein i7 Quadcore MacBook Pro im Leerlauf ist NICHT ausreichend, um diesen Fehler zu reproduzieren.
Es wird entweder übermäßig hoch sein:
Single Pass-CBR ohne Angabe einer VBV
(ignorieren Sie die Tatsache, dass CBR ohne VBV überhaupt nicht CBR ist )
oder zu niedrig:
- Single Pass CBR mit VBV
- Single Pass VBR: QScale mit VBV und Maxrate
Sowohl die VIFp- als auch die SSIM-Qualitätsmessungen zeigen, dass die niedrigeren / hohen Bitraten tatsächlich einer unnötig reduzierten / erhöhten Qualität entsprechen (dh die Bitrate sollte NICHT höher oder niedriger gewesen sein).
Doing a two-pass CBR - Codierung arbeitet groß und löst das Problem ... wenn Sie die Zeit dafür haben. Leider kann ich mir die Latenz einer Zwei-Pass-Kodierung für eine einzige Auflösung nicht leisten.
Was wollen Sie also tun?
Ich führe gerade eine erste Transkodierung mit einer niedrigeren Auflösung (480) durch. Dies wird so viele Wiedergabegeräte wie möglich abdecken. Ich möchte das als Pass 1 verwenden. Da die Auflösung von 480 ohnehin scheiße ist, kann ich das Pass-1-Video einfach als 480 anzeigen, unabhängig von dummen Bitraten in der ersten Sekunde des Videos.
Ich möchte dann die 480 Pass 1-Info verwenden und nur 2 für meine höheren Auflösungen. Im Fall von CBR / VBV wäre dies:
ffmpeg -i source.mp4 -pass 1 -vf scale=852:480 -c:v libx264 -b:v 1000k ... 480.mp4 ffmpeg -i source.mp4 -pass 2 -vf scale=1280:720 -c:v libx264 -b:v 2500k ... 720.mp4
0 Antworten auf die Frage
Verwandte Probleme
-
3
Windows Media Center (Vista): Add-On oder Software zum Schneiden von TV-Aufnahmen?
-
3
Videobearbeitung mit ATI-Karten
-
1
VirtualDub für Linux
-
2
Wie viel Datenträgerverbrauch verwenden RAW-Videos?
-
1
Java Apps im Browser blinken / reißen beim Scrollen - warum?
-
3
Wiedergabe von Video-Rips mit Windows Media Center
-
5
Wie kann ich Internetfilme (Hulu usw.) am besten auf meinem Fernseher ansehen?
-
4
Eingebettetes Flash-Video in MS Word-Dokument (2003 oder 2007)
-
10
Erzwingen Sie die native Auflösung für den Nicht-PnP-Monitor in Windows
-
4
Wie erfahre ich, warum Windows Media Center keinen Film abspielt?