Nach YouTube-Upload: Video in 4:3 schlechte Qualität, gestreckt auf 16:9 in Ordnung

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nach YouTube-Upload: Video in 4:3 schlechte Qualität, gestreckt auf 16:9 in Ordnung

    Anzeige
    Hallo beisammen,

    ich habe letzte Woche begonnen, ein Let's Play für Jagged Alliance 2 aufzunehmen. Leider habe ich noch keine Einstellungen gefunden, die wirklich befriedigende Qualität liefern. Vielleicht könnt ihr mir weiterhelfen.

    Ich nehme mit der Open Broadcaster Software auf und schneide/resize mit MeGUI; das Video, das dabei entsteht, sieht auf meinem Rechner gut aus.

    Die Spielauflösung beträgt 800x600. Diese lasse ich vor dem Upload auf YouTube per avs-Skript auf 960x720 resizen, da das 800x600-Video, wenn ich es direkt hochlade, ziemlich breiig daherkommt (nachdem es durch die YouTube-Mangel gedreht wurde).
    Ich habe dabei bereits verschiedene Resizer ausprobiert (Gauss mit unterschiedlichen Stärken, Lanczos4, Spline64, Spline36, BiCubic); das Video unten wurde mit Spline36 resized.

    Das Problem ist nun: Auf meinem Rechner ist die Qualität vollkommen in Ordnung, alle Texte sind einwandfrei lesbar. Sobald ich nun aber das Video auf YT hochlade, ist die Schrift zerfressen – zwar noch lesbar, aber bei weitem nicht mehr so gut wie vorher.

    Bei meiner Suche nach einer Lösung habe ich dann einmal ausprobiert, was passiert, wenn ich das Video nicht auf 960x720 resize, sondern auf 1280x720. Natürlich ist es so gestreckt, aber ich wollte trotzdem einmal sehen, was YT dann aus dem Video macht. Siehe da, die Schrift ist beim 16:9-Video auch nach dem Upload noch in Ordnung!

    Der einzige Unterschied zwischen den beiden Skripten/x264-Einstellungen/sonstigen MeGUI-Einstellungen ist der resize, der einmal Spline36Resize(960,720) lautet, das andere Mal Spline36Resize(1280,720).

    Hier der direkte Vergleich (achtet besonders auf die Namen der Söldner unterhalb der Portraits und über ihren Köpfen):

    16:9: youtube.com/watch?v=Kk5eeVrYcj4

    4:3: youtube.com/watch?v=2QysTUX2-GQ

    Und hIer das 4:3-Video, wie es auf meinem Rechner liegt (25 MB): mediafire.com/?4c30ane13z7c4xp

    Und die zugehörige MediaInfo-Info:

    Spoiler anzeigen
    General
    Complete name : D:\JA2LP\004\JA2.1.13.LP.004_Spline36_FS.mp4
    Format : MPEG-4
    Format profile : Base Media
    Codec ID : isom
    File size : 25.2 MiB
    Duration : 40s 898ms
    Overall bit rate : 5 159 Kbps
    Encoded date : UTC 2014-02-04 22:48:23
    Tagged date : UTC 2014-02-04 22:48:23

    Video
    ID : 1
    Format : AVC
    Format/Info : Advanced Video Codec
    Format profile : High@L4.1
    Format settings, CABAC : Yes
    Format settings, ReFrames : 4 frames
    Format settings, GOP : M=3, N=15
    Codec ID : avc1
    Codec ID/Info : Advanced Video Coding
    Duration : 40s 898ms
    Bit rate : 5 156 Kbps
    Maximum bit rate : 7 781 Kbps
    Width : 960 pixels
    Height : 720 pixels
    Display aspect ratio : 4:3
    Frame rate mode : Constant
    Frame rate : 30.000 fps
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Scan type : Progressive
    Bits/(Pixel*Frame) : 0.249
    Stream size : 25.1 MiB (100%)
    Writing library : x264 core 138 r2358 9e941d1
    Encoding settings : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=6 / lookahead_threads=1 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=2 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=15 / keyint_min=8 / scenecut=40 / intra_refresh=0 / rc_lookahead=37 / rc=crf / mbtree=1 / crf=19.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / vbv_maxrate=62500 / vbv_bufsize=78125 / crf_max=0.0 / nal_hrd=none / ip_ratio=1.40 / aq=1:1.00
    Encoded date : UTC 2014-02-04 22:48:23
    Tagged date : UTC 2014-02-04 22:48:24



    Weiß vielleicht einer von euch, was da los ist und was ich verbessern kann, um auch beim Upload in 4:3 (der korrekten AR) ein schönes Ergebnis zu erzielen?

    Falls ihr noch weitere Infos benötigt, sagt bitte Bescheid.

    Vielen Dank schon einmal im Voraus. :)

    Moerges
  • JA2 kann sehr gut komprimiert werden, da das meiste meist Standbild ist.

    Das einzige Problem was du haben wirst ist der YV12 Brei. Daran wirst du nix ändern können.

    Die Schrift ist so klein dort das se dir zerfließen tut und YT das auch noch mal womöglich macht.

    Mal einfach:

    Dein Spiel JA2 läuft auf deinem Rechner im RGB Modus. Aufnehmen tust du es aber in YV12 und das wird dir die Aufnahme womöglich zerfließen lassen.

    Weil 4:4:4 -> 4:2:0 ist schon ein Unterschied. ^^

    Kann man noch minimieren das ganze wenn man die Matizen ändert. Aber dann müsste in einen entsprechenden Farbraum aufgenommen werden. RGB wäre dann die Lösung.

    Für Gewöhnlich reicht wenn man mit Lagarth verlustfrei in YV12 aufnimmt ^^

    Wie nimmste denn auf wenn ich fragen darf?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sagaras ()

  • Hey Sagaras,

    erst einmal danke für deine Antwort.

    Ich nehme mit der Open Broadcaster Software auf, die direkt mit x264 encodiert (CRF 19). Die Auflösung des Spiels beträgt 800x600, die Aufnahme selbst hat die Auflösung meines Desktops (1920x1200), wobei nur die obere linke 800x600-Fläche das Spiel zeigt, der Rest ist schwarz. Den schwarzen Teil croppe ich per avs-Skript weg, sodass ein 800x600-Bild übrig bleibt – das auf meinem Rechner gut aussieht.

    Ich weiß, das ist für die weitere Bearbeitung nicht so toll, aber auf meinem Rechner sieht es vollkommen in Ordnung aus, und gestreckt auf 16:9 (1280x720 statt 960x720) sogar noch nach dem Upload auf YT.

    Das Problem tritt nur dann auf, wenn ich in 4:3 hochlade.

    Wenn es wirklich an Farbräumen und schlechten Konvertierungen läge, müsste das doch auch schon auf meinem Rechner (zumindest im Ansatz) sichtbar sein, oder? Und selbst wenn das noch durch die schlechte YT-Re-Encodierung zu erklären ist, müsste es doch auch bei der gestreckten Datei spätestens nach dem YT-Upload Probleme geben?

    Moerges

    Edit: Ich habe soeben mal auf 1440x1080 resized; so sieht die Schrift sowohl auf 1080p als auch auf 720p gut aus: youtube.com/watch?v=XxYMk7zPAdk

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Moerges ()

  • Moerges schrieb:

    Ich nehme mit der Open Broadcaster Software auf, die direkt mit x264 encodiert (CRF 19).

    Dieser Schritt tut sehr weh. Bitte, wenn du unbedingt Qualität haben möchtest, dann entweder VDub mit Lagarith nutzen zum Aufnehmen oder vllt halt besser noch MSI Afterburner mit Lagarith. Die beiden kostenlosen Programme würden dir im Zusammenhang mit dem Lagarith Codec das Video Lossless aufzeichnen. Also Verlustfrei. Das würde 1:1 aussehen dann. Jedenfalls wenn mit RGB aufgenommen wurde. Bei YV12 zerfließt dir das etwas. Aber auch nur minimal. Spätestens YT macht es zu YV12. ^^

    Moerges schrieb:

    Den schwarzen Teil croppe ich per avs-Skript weg, sodass ein 800x600-Bild übrig bleibt – das auf meinem Rechner gut aussieht.

    Erst Video laden im Skript, dann Croppen und dann Resizen. Immer in dieser Reihenfolge.

    Wenn du mit Lagarith aufgezeichnet hast, kannst du den SSM dazu verwenden. Dort steht dir auch ein Crop Tool zur Verfügung und wenn du im SSM Thread mal ein bisschen stöberst wirst du feststellen das man damit auch noch einiges mehr machen kann ;D

    Das Skript vom SSM kann dann in MeGUI verwendet werden.

    Moerges schrieb:

    Wenn es wirklich an Farbräumen und schlechten Konvertierungen läge, müsste das doch auch schon auf meinem Rechner (zumindest im Ansatz) sichtbar sein, oder? Und selbst wenn das noch durch die schlechte YT-Re-Encodierung zu erklären ist, müsste es doch auch bei der gestreckten Datei spätestens nach dem YT-Upload Probleme geben?

    Du nimmst mit OBS schon auf und der ist Verlustbehaftet. Haste ja eben schon selbst gesagt das du direkt in x264 aufnehmen tust. Das Verlustbehaftet und auf YT wird dir die Qualität vom Verlustvideo noch mal in die Mangel genommen. Bedeutet es wird immer schlechter. Deswegen wird Verlustfrei aufgenommen zuerst.

    Einen echten Encode macht man nur ein einziges mal und das vom Verlustfreien Rohvideo (Lagarith z.B.) -> Verlustbehafteten Video (x264) -> YT Encode

    Dein Workflow sieht aber zur Zeit so aus: Verlustbehaftetes Rohvideo (x264) -> Verlustbehaftetes Video (x264) -> YT Encode

    Welches ist deiner Meinung wohl besser? ;D

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sagaras ()

  • Anzeige
    Danke für deine Bemühungen.

    Mir ist durchaus bewusst, dass die ganze Re-Encodiererei der Qualität (etwas) schadet – aber doch nicht in dem Umfang, wie man es in den in meinem ersten Post verlinkten Vergleichsvideos sieht. Vor allem wenn man in Betracht zieht, dass das auf 1280x720 gestreckte Video aus dem gleichen Quellmaterial und nach dem gleichen Workflow nach dem YT-Upload einwandfrei aussieht.

    Ich habe gerade noch testweise auf 1440x1080 resized (mit sonst identischen Einstellungen, und ja, ich croppe vor dem resize :)); dabei sieht das Video (und vor allem die Schrift) nach dem Upload sowohl in 1080p als auch 720p ordentlich aus: youtube.com/watch?v=XxYMk7zPAdk

    Falls es keine andere Lösung gibt, werde ich wohl in Zukunft in 1440x1080 hochladen.

    Sagaras, jedenfalls noch einmal vielen Dank für deine Antworten. Die Aufnahmemöglichkeit mit VDub und Lagarith werde ich mir gleich anschauen; vielleicht ist so noch mehr (sichtbare) Qualität drin.

    Moerges
  • Moerges schrieb:

    Mir ist durchaus bewusst, dass die ganze Re-Encodiererei der Qualität (etwas) schadet – aber doch nicht in dem Umfang, wie man es in den in meinem ersten Post verlinkten Vergleichsvideos sieht. Vor allem wenn man in Betracht zieht, dass das auf 1280x720 gestreckte Video aus dem gleichen Quellmaterial und nach dem gleichen Workflow nach dem YT-Upload einwandfrei aussieht.

    Du vergisst das gerade x264 eine andere Struktur hat als beispielsweise Lossless Material. Dein x264 Material ist schon in Blöcken zerlegt und wird es auf YT nun noch einmal.

    Das ist als wenn du von einer Kopie eine Kopie machst. Resultat wird immer schlechter. Das ist nun mal so. Gerade weil du eben ein x264 Material hast kann das zu solchen Problemen führen.

    In AVISynth (MeGUIs Skriptnutzung, kurz AVS) müsste ja dann so aussehen bei dir Momentan:

    Quellcode

    1. LoadPlugin("MeGUI\Tools\FFMS\FFMS2.DLL")
    2. FFVideoSource("Dein Video.mp4")
    3. #YV12 lässt nur Mod2 Cropping zu
    4. Crop(links, oben, -rechts, -unten)
    5. Spline16Resize(960, 720)


    Mehr dürfte bei dir nicht drin sein. A) Indexer sind langsam und sollten nur dann genutzt werden wenn sie wirklich gebraucht werden. Gerade bei LP kann sowas dauern bis die Indexierung fertig ist. B) Ein 4:3 kannst du nur zu 100% hinbekommen, wenn du das Bild davor mit Crop auch korrekt in 4:3 gemacht hast. Vorher nicht.

    Dein Phänomen ist jetzt der das du durch das Strecken des Bildes die Zerfließung des YV12 umgehst halbwegs. Jedenfalls in X Achsen Richtung. Dabei hat die Schrift mehr Flächenfarbe durch diesen Resize und YV12 kann danach nicht noch mehr zerfließen lassen auf YT.

    Wenn du ganz Vorsichtig bist, würde ich dir sogar zum PointResize raten bei dem Spiel. Müsstest aber die 600p in 1200p hochskalieren lassen, da für PointResize nur ganze Faktoren sich eignen, weil die Blöcke akkurat verdoppelt werden dann. Dafür musste aber auch Akkurat den Resize machen.

    Am besten ist es wenn du nach dem Croppen das hier eingibst:

    PointResize(last.width*2, last.height*2)

    Dadurch wird dein Video mit dem Schärfsten Resizer behandelt. Hättest durch die Verdopplung auch gleichzeitig 1080p raus, da du ja auf 1200p kommen würdest damit.

    Moerges schrieb:

    Sagaras, jedenfalls noch einmal vielen Dank für deine Antworten. Die Aufnahmemöglichkeit mit VDub und Lagarith werde ich mir gleich anschauen; vielleicht ist so noch mehr (sichtbare) Qualität drin.

    Definitiv.

    Ich denke aber du wirst ein Fehler beim Skript machen irgendwo. Wäre interessant was du da machst ^^
  • Ja, mein Skript sieht so aus, wie du's erwartet hast:

    Quellcode

    1. LoadPlugin("C:\Program Files (x86)\Ripping\MeGUI\tools\ffms\ffms2.dll")
    2. FFVideoSource("D:\JA2LP\004\JA2.1.13.LP.004.mp4", threads=1)
    3. Trim(474,1700)
    4. Crop(0,0,-1120,-600)
    5. Spline36Resize(960,720)
    6. FadeIn(25)
    7. FadeOut(115)


    Der Indexer braucht bei mir für ein einstündiges Video 3 Sekunden; damit könnte ich leben. :)

    4:3 ist das Bild nach dem crop, 800x600 um genau zu sein. (Quellmaterial ist wie gesagt 1920x1200.)

    Ich werde den PointResize mal ausprobieren! Danke für den Tipp.

    Ansonsten ist wohl ein Umstieg auf Lagarith der sinnvollste nächste Schritt.
  • Moerges schrieb:

    Ansonsten ist wohl ein Umstieg auf Lagarith der sinnvollste nächste Schritt.

    Auf jeden Fall. Sowas wie FFVideoSource seh ich eigentlich nicht gerne bei PC Spielen. Höstens bei Capture Karten und Grabbers bei Konsolen Aufnahmen.
    Ansonsten ist die beste Wahl immer eine Verlustfreie Quelle wo wirklich noch absolut gar nix gemacht wurde. Quasi ein 1:1 Bild von dem was du tatsächlich im Spiel auch siehst.

    Dann sieht das ganze nämlich auch anders aus wenn du es mit MeGUI encodieren tust und natürlich auch auf YT.

    Wenn du Verlustfrei aufnimmst mit Lagarith wirste eine AVI haben. Die ladeste dann mit AVISource rein. Bei einer 30FPS Aufnahme würde das so aussehen:

    Quellcode

    1. AVISource("dein Video.AVI").AssumeFPS(30,1)
    2. #Crop auf 4:3
    3. Crop(links, oben, -rechts, - unten
    4. #Resize
    5. PointResize(last.width * 2, last.height * 2)


    Das wäre schneller von der Verarbeitung her, da kein Plugin genutzt werden muss und keine Indexierung stattfinden muss. Und PointResize muss auch nicht so viel arbeiten, da es der schnellste Resizer ist. Aber wie gesagt... Vorsichtig bei diesen Resizer. Und nur wirklich * 2 verwenden. Sonst kann es sein das das ganze unschön wird ^^ Weil hiebei wird tatsächlich nun ein Pixel exakt in 4 Pixel umgewandelt. Andere Resizer machen das sanfter. Da wäre dann Spline16 wohl die nächstere Wahl für dich.

    Moerges schrieb:

    4:3 ist das Bild nach dem crop, 800x600 um genau zu sein. (Quellmaterial ist wie gesagt 1920x1200.)

    Das versteh ich nicht ganz jetzt... müsste ja heißen das du das Spiel im Fenstermodus spielst. Wenn dein Quellvideo 1920x1200 hat und du nach dem Croppen 800x600 bekommst, dann haste doch Fenstermodus. Ansonsten kann es nur sein das JA2 das Bild auf 1200p hochskalieren tut und du die 1920x1200 abfängst. Dann haste aber kein 800x600 nach dem Croppen, sondern eher 1600x1200. Du hast eine 16:10 Aufnahme und machst daraus direkt durchs Coppen der linken und rechten Seite ein 4:3 Bild draus. Dann sind es aber 1600x1200. Dann ist es ja noch klarer das du beim Down-Resizen schlechteres Bild bekommst. Da werden ja Pixel rausgeworfen aus dem ganzen Verfahren wenn du in 720p Resized.
  • Danke, dass du dir so viel Zeit nimmst, mir zu helfen. Ich weiß das wirklich zu schätzen. :)

    Ich habe soeben mal ein paar Sekunden über Afterburner mit Lagarith aufgenommen, hier die Ergebnisse:

    Mit Spline36Resize(960,720): youtu.be/QUVIMLhH9qQ <- meinen Augen nach ähnlich häßlich wie der 960x720-Upload aus der Open Broadcaster-Quelle
    Mit PointResize: youtube.com/watch?v=Mj7kM3XOVBU <- saubere Qualität, wenn auch etwas sehr hart durch den PointResize
    Mit Spline16Resize(1440,1080): youtube.com/watch?v=-UGlTN5cpxo <- saubere Qualität, sowohl in 1080p als auch 720p

    Skript sah jeweils so aus (mit jeweils anderem resizer, natürlich):

    Quellcode

    1. AviSource("D:\JA2LP\005\JA2.1.13.LP.005.avi").AssumeFPS(30,1)
    2. ConvertToYV12()
    3. Spline16Resize(1440,1080)


    (Crop war nicht mehr nötig, da der Afterburner das Video direkt in 800x600 speichert.)


    Was die Open Broadcaster Software mit der Auflösung genau macht, weiß ich auch nicht. Jedenfalls zeichnet sie das Spielevideo (ich spiele Fullscreen, nicht im Fenster) aus irgendeinem Grund so auf, dass die 800x600 Pixel des Spiels im oberen linken Eck kleben, während rechts davon 1120 schwarze Pixel anhängen, unten 600. Nach dem oben beschriebenen Crop habe ich dann eben das 800x600-Bild.
  • Jap. Dann ist es sogar noch besser. Ohne Crop ein Filter weniger um den sich der Encoder bemühen muss ^^

    Moerges schrieb:

    Mit PointResize: youtube.com/watch?v=Mj7kM3XOVBU <- saubere Qualität, wenn auch etwas sehr hart durch den PointResize

    Hatte ich dir aber auch gesagt. Es ist der schärfste Resizer den es gibt und gerade bei falscher Verwendung auch sehr leicht Anfällig auf Artefakte im Bild.
    Deswegen wird auch nur in Faktor 2 empfohlen damit zu Resizen.

    Moerges schrieb:

    Mit Spline16Resize(1440,1080): youtube.com/watch?v=-UGlTN5cpxo <- saubere Qualität, sowohl in 1080p als auch 720p

    Ein weiterer Schritt wäre die Nutzung von ResampleHQ. Um das aber nicht zu kompliziert zu erklären würde ich dir den SSM ans Herz legen für deine Aufnahmen die du mit MeGUI encodieren tust. Der SSM erstellt dir dann die Skripte wie du sie brauchst für deine Videos. Und du kannst die Filter übersichtlicher anwenden. Wäre nur so als Tipp noch zu MeGUI. Dort haste dann auch MT Nutzung von AVISynth, dann geht der Encode noch ein bisschen schneller wegen der Multithreading Funktion ^^

    Das Ding ist extra für Let's Plays zugeschnitten worden und wird immer wieder mal verbessert von Sachen die MeGUI einfach nicht hat und die User auch nix wissen. Von Farbkonvertierungen bis hin zur automatisch korrekten Einbettung der Resizer.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Sagaras ()

  • Super, danke, dann werd' ich demnächst einfach in 1440x1080 uploaden; dann sieht 720p ordentlich aus, und 1080p gibt's zusätzlich zur Auswahl, für diejenigen, die die Bandbreite haben und das letzte Bißchen Qualität herauskitzeln wollen. :)

    Deinen Scriptmaker lade ich gleich; werde das mit ResampleHQ und den anderen Goodies ausprobieren!