ffmpeg-einstellungen für hochwertige youtube-videos

1785
pb.

Ich versuche, ein kurzes Video meines Desktops aufzunehmen und auf youtube hochzuladen. Das Problem ist, dass jedes Mal, wenn ich es auf youtube oder sogar dropbox (als Video) hochlade, die Qualität viel schlechter ist.

Meine ffmpeg-Ausführung:

ffmpeg -f x11grab -s 1366x768 -r 30 -i :0.0 -codec:v libx264 -crf 10 -bf 20 -flags +cgop -pix_fmt yuv440p -movflags faststart help.mp4 

beyogen auf:

ffmpeg -i <input file> -codec:v libx264 -crf 21 -bf 2 -flags +cgop -pix_fmt yuv420p -codec:a aac -strict -2 -b:a 384k -r:a 48000 -movflags faststart <output_name>.mp4 

was ich hier gefunden habe

Originaldatei (.zip): https://www.dropbox.com/s/xlkr83rkqfxon23/help.mp4.zip?dl=0

Datei nach dem Hochladen auf youtube: https://www.youtube.com/watch?v=ewEUgpXOpmg

Wie Sie sehen, habe ich nach dem Hochladen auf youtube keine Qualitätsverluste.

Kannst du mir helfen?
Wie soll ich die geeigneten Parameter für die Aufnahme und das Hochladen von Videos auswählen?

0
Dein Video hat mehr als genug Bits für qualitativ hochwertiges Video, aber YouTube kodiert alles, was du gibst, neu. Du kannst nichts tun. LordNeckbeard vor 6 Jahren 0

1 Antwort auf die Frage

0
i336_

Nehmen Sie Ihr aufgenommenes Video auf und skalieren Sie es.

Ich habe gehört, dass das Kodiersystem von YT ein Supermegahighresolution-Video anders behandelt und härter arbeitet, um Versionen mit niedrigerer Auflösung von höherer Qualität als 1080p / etc zu machen. YMMV habe ich selbst noch nie erforscht, aber es ist einen Versuch wert.

Das einzige Problem ist, dass Upscaling ein notwendigerweise verlustbehafteter Prozess ist. Perfect-Pixel-Skalierung sieht schrecklich aus (siehe unten). Wenn das Kodiersystem von YT nicht erstaunlich ist, gehe ich davon aus, dass eine Glättung erforderlich ist, damit das Video immer noch gut aussieht, wenn die 1080p / 720p-Versionen (neu codiert, skaliert nach hinten) abgespielt werden.

Es geht also darum, ein Gleichgewicht zwischen dem Upscale- und Downscale-Prozess zu finden, der ein möglichst geringes Maß an Unschärfe / Verlust verursacht. Im Allgemeinen handelt es sich hierbei um ein Versuchs- und Fehlerproblem, das echte Eingaben erfordert (speziell für das, was Sie auf dem Bildschirm sehen; z. B. eine Mehrheit von Text).

(Außerdem habe ich keine Ahnung, ob Sie bestimmte Videoauflösungen entfernen / verstecken können, wenn Sie ein Video in YT hochladen, aber in diesem Fall würden Sie sicherlich die 2K / 4K-Version ausblenden.)

Ich habe ein bisschen mit ffmpeg gespielt; Die zwei wichtigsten Informationen, die sich als am nützlichsten erwiesen haben, waren die Seite mit der Skalierungsanleitung und die Scaler-Dokumentation .

Folgendes habe ich mir ausgedacht:

ffmpeg -i help.mp4 -c:v libx264 -preset ultrafast -vf scale=iw*4:-1:flags=neighbor+bitexact+accurate_rnd+full_chroma_int+full_chroma_inp+print_info -y help4x.mp4

  • -c:v libx264 -preset ultrafastDie Kodierung wird schneller ausgeführt, es werden jedoch viele Festplatten verwendet (in diesem Fall 6,6 MB im Vergleich zu 1,7 MB). Upscaling schien, unabhängig von den Codierungseinstellungen, mindestens 1 GB RAM und meine gesamte CPU zu benötigen. Wenn Sie also mehr Bandbreite als Zeit haben, bevorzugen Sie möglicherweise die Beschleunigung. Der H264-Encoder hat andere Geschwindigkeits- / Leistungseinstellungen, siehe https://trac.ffmpeg.org/wiki/Encode/H.264

  • -vf scale=iw*4:-1erhöht das Video um 4x>: D - iw= Eingabebreite *4(multipliziert mit 4) ist selbsterklärend, -1= "Breite aus Höhe ermitteln und Seitenverhältnis beibehalten."

  • flags=:

    • Ich habe neighborhier ausgewählt, um Ihnen zu zeigen, welches derjenige ist, der keine Unschärfen / Glätten bewirkt, dh perfekte Pixelverdoppelung / -verdreifachung / usw., und um Sie wissen zu lassen, dass es tatsächlich überraschend schlecht aussieht (heruntergefahren) erwartet das nicht). experimentalsah gut aus, unsicher, ob es besser als die Standardeinstellung war bicubic. Ich empfehle Ihnen dringend, durch https://ffmpeg.org/ffmpeg-scaler.html zu blättern, ein kurzes Testvideo zusammenzustellen, in dem gezeigt wird, was Sie eigentlich aufnehmen möchten, und alle Encoder auszuprobieren (möglicherweise sogar alle Testvideos hochzuladen). Was auch immer Sie hier tun, ich bin gespannt, welche Ergebnisse Sie erzielen!

    • Ich habe accurate_rnd+full_chroma_int+full_chroma_inp+print_infosie unter https://superuser.com/questions/782133/ffmpeg-upscaling-video gefunden und sie in den Computer geworfen. Ich habe keine Ahnung, was sie tun / ob sie helfen. : D

    • bitexactklingt gut. Ich habe keine Ahnung, was das auch macht.

    • print_info zeigt an, welchen Scaler Sie gerade verwenden "Drücken Sie [q], um zu stoppen".

-y ermöglicht das Überschreiben . Ansonsten nagelt ffmpeg Sie jedes Mal mit einem "Überschreiben (J / N)".