Encoding-Talk

  • Deine Angaben sind auch die in denen mein Video encodiert wurde. Video ist begrenzter Bereich und BT.709, das kann ich auch in AVSPmod so nachprüfen. Und MPC-HC stellt es vollkommen richtig dar, während VLC zwar etwas verblasst ist, aber zumindest korrekt BT.709 ist. Stelle ich bei AVSPmod einfach BT.601 ein und belasse es auf Begrenztem Farbraum, dann krieg ich so ziemlich exakt das Bild von Youtube raus: Es ist nicht verblasst aber die Farben trotzdem falsch.


    Das heisst an der Farb Reichweite ändert sich also nichts, was Youtube da macht ist ja offensichtlich schlichtweg ein BT.709 video nehmen und es ohne grund für manche als BT.601 auszuspucken, und offensichtlich nicht nur für mich so.


    Ich kann mir trotzdem gut vorstellen das es an Nvidia Einstellungen liegt, denn zwinge ich Youtube den Flash Player auf, dann wird es korrekt dargestellt.

  • Abend zusammen,


    ich encodiere ja bei kurzen, bearbeiteten Videos immer zuerst unkomprimiert mit Adobe Premiere und dann erst mit MeGUI (Was bei mir irgendwie schneller geht als der Umweg über AFS oder vfwschlagmichtot). Nun habe ich mir nie zuvor Gedanken darüber gemacht, aber jetzt fällt mir auf, dass ich ja unterschiedliche Optionen habe um mit Premiere möglichst verlustfrei meine Datei zur weiteren Bearbeitung zur Verfügung zu stellen - wo ist denn der Unterschied. und gibt es überhaupt einen?


    Zum einen gibt es das Format "AVI (Unkomprimiert)", wo ich neben den grundlegenden Videoeinstellungen zwischen zwei Video-Codecs die Wahl habe: V210 vs UYVY.


    Ich hab aber auch das Format "AVI" auswählen und schon habe ich ne mehr oder minder freie Wahl der Video-Codecs. Zum einen gibt es die Auswahlmöglichkeit "None" - also ohne jeglichen Video-Codec? Oder Uncompressed UYVY 422 8bit. Oder MagicYUV losless v1.2rev2 (64 bit) oder V210 10-bit YUV und ein paar mehr, bei denn der Qualitäts-regler bei 100 ausgegraut ist.


    Was davon eignet sich zu meinem Zweck und gibt es überhaupt schwerwiegende Unterschiede (von der Dateigröße mal abgesehen)?

  • Warum nicht erneut wieder den gleichen Lossless Codec mit dem du auch aufgenommen hast? Das drittelt deine HDD Last und geht somit wesentlich schneller ohne das deine Platte danach randvoll ist.
    Beim Codec auch drauf achten das die Thread Einstellung auf Auto/maximum steht.
    Beim Export möglichst den gleichen Farbraum wie bei Aufnahme wieder wählen.

  • Hier nochmal meine Render Einstellungen:
    Audio: 128 Kbit/s; 48.000 Hz; 32 Bit; Stereo; AAC
    Video: 59,940 fps; 1920x1080 Progressive; YUV; 16 Mbit/s

    Die sind ja spannend.
    Vor allem der Audio. Nur 128 kbit, aber 48khz und 32bit? okay .. :D


    Warum nicht 60 fps statt 59,94? Quelle eine Konsole? Ansonsten auch eher strange.
    Die Videobitrate ist auch viel zu niedrig. Erstrecht bei den Vegas Encodern.

  • Ich heb mal den Thread wieder aus Versenkung.


    Ich bin super faul geworden, ich versuche alle möglichen Abläufe möglichst zu automatisieren. Bei AviSynth beiße ich mir grad ein bisschen die Zähne und finde nicht wirklich was im Netz dazu. Vorhandene Vorkenntnisse: Batch.


    Folgende Aufgabe: Die Videos werden ja mit den gleichen Einstellungen encodiert. Ich möchte, dass das Skript einfach die .avi im Ordner lädt, ohne des absoluten Pfads.


    Ich habe hier noch paar alte Skripts von SSM, die ich grad anzupassen versuche.


    Originalzeile:


    Nun, wenn ich stattdessen AVIload ("*.avi") oder AVIsource ("*.avi") oder AVIFileSource("*.avi") einsetze, bekomme ich einen Fehler bei MeGUI. Ich verstehe auch nicht so ganz den Unterschied zwischen den 3 Befehlen. Wie funktioniert denn sowas bei AviSynth? Irgendwie bin ich da auch zu doof das zu googlen, ich bekomme nur was zu DirectShowSource, aber das ich noch mal was anderes. Geht sowas überhaupt?


    Danke :)

  • AVIload wird nicht so funktionieren, weil das ist eine von mir erstellte Funktion die ebenfalls in das Skript hinein müsste. Die Angaben die du da siehst sind Parameter die der Funktion übergeben werden. So stehen die Parameter für AVIload folgendermaßen:
    AVIload(Pafd des Videos in Anführungszeichen, Bildschnitt für Links, Oben, Rechts, Unten, Pixel Typ als String [Auto, RGB24, YV24, YUY2, YV12, Y8], Angabe für FPS Rundung als String [Auto, Igno., Manueller FPS Wert als Bruch], FPS Zähler Wert, FPS Nenner Wert)


    Um das zu verwenden benötigst du halt die Funktion dazu. Die wird aber durch den SSM individuell generiert. Je nachdem welche Einstellungen du getätigt hast.


    Würde daher vorschlagen das du diese Option vergisst und es im SSM lässt. ^^


    -


    Standard kannst du aber AVISource verwenden für AVI Files. http://avisynth.nl/index.php/AviSource
    FFVideoSource und FFAudioSource muss in Kombination genutzt werden und braucht das Plugin FFMS2.DLL http://avisynth.nl/index.php/FFmpegSource#Function_Reference
    Dann gibt es noch L-Smash: http://avisynth.nl/index.php/LSMASHSource


    FFMS2 als auch L-Smash wirst du brauchen, wenn du vorhast andere Dinge in AVISynth zu laden wie z.B. MP4, MKV, etc. pp.



    Darauf kannst du eine Batch aufbauen die solch ein Skript generiert. Denn ein AVISynth Skript kann nicht von sich aus erkennen ob in seinem Pfad eine Videodatei existiert oder nicht. Und schon gar nicht das AVISynth das automatisch in sein Skript schreibt. ^^


    Aber mit einer Batch Datei kannst du das bewerkstelligen oder man kann programmieren und schreibt sich ein kleines Tool dafür (Was eleganter wäre als eine Batch). ^^



    Theoretisch müsste die Batch oder das Tool folgende Aufgabe erfüllen:
    - Prüfung ob keine, eine oder mehrere AVI Dateien im Ordner sind
    - Sind AVI Dateien vorhanden muss für jede dieser Dateien ein Skript angelegt werden
    - In jedem der Skripte muss dann die jeweilige AVI Datei (Am besten mit Pfad) von der Batch/Tool eingetragen werden



    Um das in Batch umzusetzen wird das echt kompliziert. Wenn nicht gar unmöglich, da die Schleife für Dateinamen und Skripterstellung mehrer Dateien mit 2 Schleifen gelöst werden müsste und das würde bei einer Batch Komplikationen ergeben.


    Aber ganz easy ist das z.B. schon mit QB64 zu regeln (Kostenlos): https://www.portal.qb64.org/


    Funktioniert Tadellos. Die EXE Datei muss du mit QB64 erzeugen und in den Ordner kopieren wo du deine Videos hast.


    Beim Ausführen, wird der Skript für jede AVI Datei erstellt die sich im Ordner befindet.


    Kann man noch ausbauen. z.B.
    - einen Absoluten Pfad für die Dateinamen mit in den Skript schreiben lassen
    - Die Skripte dann in ein extra Ordner verschieben


    So hätte man eine bessere Übersicht.


    Man kann das auch Optisch über das Programm ausgeben lassen. Aber so hast du schon mal ein Muster. ;D

  • Hi, sorry für die späte Antwort. Vielen Dank auf jeden Fall für die ausführliche Erklärung, jetzt verstehe ich das Problem. Dafür muss ich mir also mehr Zeit einplanen :D

  • Grüße!


    Ich habe eine Frage bezüglich Codec und Rendering. Ich denke mal, dass die Frage in diesen Thread passt, auch wenn jetzt hier schon länger nicht mehr geschrieben wurden.


    Zu meinen OBS-Einstellungen, verfahre ich folgend:


    -------------------------------------


    Basis Leinwandauflösung: 2560x1440
    Skalierte Ausgabeauflösung: 1920x1080
    Skalierungsfilter: Lanczos

    Videokodierer: Nvidia Nvenc H.264
    Ausgabe umskalieren: Lanczos 1920x1080
    CQP mit CQ-Level 16
    Keyframeintervall: 2s
    Voreinstellung: p7 am langsamsten beste Qualität
    Tuning: Hohe Qualität
    Mehrere Durchgänge: Ein Durchgang
    Profil: High

    Lookahead aus
    Psycho Visual Tuning an


    Anschließend rendere ich die Aufnahmen in Davinci Resolve folgend:


    Format: Quicktime
    Codec: h.264
    Encoder: Auto

    Auflösung: Custom 2560x1440
    Framerate: 60
    Qualität: Automatisch Beste
    Verschlüsselungsprofil: High
    Schlüsselbilder: Automatisch
    Frame-Neuanordnung: An
    Preset: Qualität


    -------------------------------------


    Die Dateien von OBS sind im Verhältnis relativ moderat groß. Nach dem Rendering erreichen sie locker die doppelte Größe, in Richtung 40-45 GB.

    Ich hatte mal die Überlegung gehabt, im Rendering den Codec auf H.265 zu stellen, hatte aber dann in der finalen Datei, zwar nur selten und flüchtig, Artefakte im Bild gehabt. In der OBS-Datei waren sie nicht gewesen.


    Gibt es Möglichkeiten, bei gleichbleibender Qualität die Dateigrößen, nach dem Rendering, in moderaten Größen zu halten? Und wie verhält es sich genau im Vergleich mit den Codec h.264 und h.265?


    Ich habe mich schon versucht im Internet und auf Youtube umzuhören und irgendwie doch verschiedene Aussagen erhalten, bzw. gelesen. H.265 komprimiert besser aber die Qualität sei bei H.264 schärfer? Im Moment liegt bei mir viel gefährliches Halbwissen vor... Wenn also jemand Ahnung hat, wäre ich um ein paar aufklärende Gedanken dankbar!

  • Warum nimmst du in 1080p auf nur um es dann wieder zurück auf 1440p zu skalieren? Das macht ja schonmal gar keinen Sinn.

    Du solltest auf jeden Fall auch mit CQ statt CQP arbeiten. Dadurch wird es nur halb so groß bei identischer Qualität und bei Dunkelheit sogar besserer Qualität

    H.265 ist deutlich effizienter auch im Falle NVEnc


    Der zweite Encode sollte dann auch mit H.265 gemacht werden. Auch am besten mit P7 und einem CQ Wert von 23 oder besser.

    Ideal wäre für youtube 4k. Aber zumindest die 1440p sollten es schon sein, da youtube auf 1080p unerträglich aussieht.


    OBS Einstellungen als Beispiel für CQ 15


    https://s20.directupload.net/images/user/241021/eimq8rka.png

    https://s20.directupload.net/images/user/241021/usxjmiub.png


    Preset bei Aufnahme nur P3 weil ich bei 4k60 bisschen performance bewahren möchte.

  • Uff.. Sagen wir mal so, ich versuche noch den richtigen Umgang mit dem Werkzeug zu lernen!

    Ich habe noch nie von CQ gehört. Auf deinen Hinweis hin, habe ich mir das mal grob angeschaut, auch dank deiner Bilder. Tatsächlich muss ich gestehen, dass mich das schon etwas überwältigt hat. Mein Wissen um all das ist nicht gerade hoch. Z.b. habe ich noch nie von dem Container Matroska gehört.

    Für mich ist es an sich wichtig, dass ich - zumindest im Ansatz - weiß was ich da tue. Ich kann zwar die Werte von Dir übernehmen, dennoch würde ich sehr gerne selber wissen wollen, lernen, was es genau damit auf sich hat. Weil von einer benutzerdefinierten Ausgabe habe ich bisher noch keine greifbare Erklärung gelesen.

  • CQ ist Constant Quality. Gibt es auch beim x264 Encoder, da heißt es jedoch Constant Rate Factor (CRF). CRF ist noch deutlich effizienter als NVEnc's CQ, aber x264 ist halt CPU Encoder und somit würde es bei Aufnahme zu viel fps kosten.

    CQP = Constant Quantizer Parameter. Während CQ / CRF für jeden Frame einen eigenen Quantizer Wert benutzt je nach komplexität der Szene, gibt man mit CQP einen festen Faktor an. CQ / CRF hat daher den Vorteil bei jedem Frame identisch auszusehen für das Auge. CQP ist jedoch nur mathematisch identisch. Problem an CQP ist aber: Dunkelheit kann zum einen sehr gut komprimiert werden, braucht jedoch dennoch wenig Kompression da es das Auge sonst schnell bemerkt. Dadurch das aber Dunkelheit gut komprimierbar ist, kann CRF bedenkenlos sehr niedrige Quantisierung benutzen und die Framequalität bleibt dann identisch zu den komplexen Frames. Komplexe frames hingegen können stärker komprimiert werden ohne das wir es bemerken, wodurch wir enorm Speicher sparen und die Dunkelheit und ruhige Szenen sogar besser aussehen. Die dynamische Quantisierung benutzt dann die Quantizerwerte so, dass jeder Frame für das Auge identisch aussieht auf gewählten Faktor. Das klappt tatsächlich auch sehr gut und bei x264 sogar hervorragend akkurat.


    matroska hat die Endung .mkv.

    MKV hat den riesigen Vorteil, sollte mal eine Aufnahme nicht geschlossen werden (z.B. OBS Crash, Systemcrash, denk dir was aus) kann man sie bis zum letzten vorhandenen Keyframe wieder vollständig wiederherstellen. Einfach mit MKVToolnixGUI dann neu muxen.

    Bei meinem eingestellten Keyframe Intervall von 120 Frames auf 60fps wären es also maximal 2 Sekunden die dann fehlen würden.

    Bei MP4 hingegen kannst du die Aufnahme dann in den Müll schmeißen.


    Zudem hat MKV einen erheblich breiteren Audiocodec Support. Ich bevorzuge für die Aufnahme unkomprimierten Audio (PCM WAV) da dieser sich am besten eignet für Audionachbearbeitung. Und benutze dann für den späteren Video Encode FLAC (verlustfreie Audiokompression) sodass youtube dann zumindest den Audio verlustfrei erhält, was natürlich die beste basis ist für deren Transcodes (sprich deren Neucodierung von Audio und Video)

  • Ich habe jetzt mehrere Testläufe mit den von Dir empfohlenen Einstellungen gemacht, dabei muss ich gestehen, dass mir erst bei dem letzten Testlauf ein paar Anpassungsfehler im Schnittprogramm unterlaufen sind. Wenn ich den Farbbereich in OBS anpasse, dann sollte ich dass wohl auch in weiteren Programmen tun, wo ich das jeweilige Video durchschleuse! :D


    In dem Schnittprogramm, Davinci Resolve, muss ich am Ende auch noch einmal die Keyframes einstellen. Normal stehen die auf Auto, und das Endprodukt ist keine große Videodatei. Da ich in OBS ja auch mit Keyframe-Intervall von 2 Sekunden arbeite, muss ich das ja auch in Davinci einstellen(?!). Die Datei, die ich dann endgültig hochlade, hat dann im Endeffekt jedoch wieder eine Größe von, je nach Videolänge, von 40-45 GB.


    Sind solche Größen letztendlich im realen Verhältnis zu den Qualitätseinstellungen von OBS + Schnittprogramm?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!