Beiträge von Sagaras

    x265 und VP9 stehen sozusagen auf ein Level. Leistungshungriger als x264 und somit auch langsamer bei der Encodierung.


    Zudem wird x265 noch immer Entwickelt und ist in MeGUI mehr als ein Test zu sehen.


    Zudem kommt noch hinzu das Youtube eh nix mit x265 anfangen kann. Also für die meisten eh unnütz momentan. Die Decodierung von x265 Material zieht auch bei der Decodierung extrem viel CPU Ressourcen. Mehr als x264. Dafür kann x265 besser komprimieren. Was ja auch Zielführend bei der Entwicklung war.


    Fazit: x265 ist langsamer und CPU Hungriger als x264.


    Wer ist eigentlich der Entwickler hinter MeGUI? Die Homepage ist jedenfalls down.

    Der Entwickler hinter MeGUI ist Zathor.


    Zusammen mit sein Dream Team von und zu: Charleski, Archi Lopez (doom9), Kurtnoise (kurtnoise13) und Sharktooth (sharx1976)



    Die Homepage ist deshalb down glaub ich, da sie kaum bzw. gar nicht gepflegt worden ist und sie somit Brach lag. Gleiches auch momentan mit der Wiki Seite zu MeGUI. Da sind teils so alte Sachen drin, die gibt es entweder schon gar nicht mehr oder sind so veraltet das neuere Sachen da keinen Anhang gefunden haben. ^^


    Übrigens war Zathor auch mal in diesem Forum angemeldet, bzw. ist es noch. Aber er ist nicht mehr aktiv jetzt.


    Lustigerweise war es auch nur ein Beitrag den er jemals im LPF zum besten gab: MeGUI [2015] -- x264 - bester Encoder, beste Videoqualität auf Youtube ;-)

    Am nächsten Morgen dann Audio und Video zusammenmuxen (oder kann man das auch noch brav ins Skript einbauen?) und ich hab meine Ruhe.

    Man kann das Skript so machen das er Optional, wenn die WAV Datein extrahiert wurden und angegeben wurden und vor allem existieren, er im Skript eine andere Ladesequenz nutzt.


    Und das geht so:


    ALSO... wenn das Skript jetzt zwischen Zeile 7 und 11 einen Fehler schmeißt, dann bricht er den Versuch zwischen Zeile 7 und 11 ab und führt stattdessen Zeile 11 bis 15 aus.


    Das heißt, wenn dein Video oder Track1 oder Track2 als Separate Dateien nicht existieren, dann versucht er aus dem Video selbst Track1 und Track2 zu ziehen.


    Damit hast du die Wahl ob die Audiodateien extrahiert worden sind oder im Video drin sind. Erst versucht er die Externe Variante und wenn da Fehler auftauchen, wie z.B. Datei existiert nicht, dann versucht er die Interne Variante.


    Ist das Video selbst nicht existent, geht gar nix. ^^



    Und für das automatische Muxen gibt es in MeGUI AutoEncode.


    AutoEncode encodiert erst Audio, dann Video und dann muxt er das auch noch alles zusammen.


    Muss nur eingestellt werden richtig.


    MeGUI -> Options -> Settings -> Extra Configuration -> Auomated Encoding -> Configure AutoEncode defaults
    Da einfach auf MKV stellen einmal und die Auswahl "No Target Size" nutzen. Dann nimmt er deine eingestellten Encoder Settings die du momentan aktiv hast.


    Und dann schmeißt du nur noch das Skript rein, drückst auf AutoEncode und fertig.

    Sofern du die neue AVISynth Version drauf hast (ab v2.6), dann kannst du mit AVISource auch Audio direkt laden.


    ABER... das Ganze ist etwas limitiert. Also bitte bei einer Verwendung von 44100Hz und 16Bit nicht länger als 6h aufnehmen.


    Weil AVISource läd Audio genauso wie WAVSource lediglich Wave32 Audio. Und das darf nicht mehr als 4GB übersteigen der Audio Stream.


    Dann kannst du folgendermaßen das Skript machen:


    Jetzt lädt er in Zeile 4 das Video + Audiotrack 1 aus dem Video rein. In Zeile 5 wird der Audiotrack vom Video getrennt via KillVideo().
    Dann muss in Zeile 6 das Video noch mal geladen werden, nur diesmal mit Audiotrack 2 und es wird wieder der Videotrack gekillt.


    Und schon hast du alles Separat. In Zeile 9 wird Audio gekillt um nur noch den Videotrack zu haben. Und jetzt verfährst du ganz normal weiter.


    So brauchst die Auditracks nicht extrahieren, sondern kannst sie gleich verwenden, sofern du da nix weiter bearbeiten willst.

    Kannst das Skript auch etwas kürzen.


    Da dein Video und deine Audio Tracks die gleichen Namen haben, kannst du das wie in Zeile 1 abkürzen und fügst wie in Zeile 4 und 9 einfach nur die Enden an. Damit kürzt du das Skript schon mal.


    Bei AVISource kommt als erstes Argument das Video was geladen werden soll und als zweites Argument ob Audio mit geladen werden soll. Da es so Programmiertechnisch an zweiter Stelle ist, brauchst du das Argument nicht zu schreiben, sondern sagst einfach "false", da Audio wie gesagt Standardmäßig das zweite fortlaufende Argument ist.


    Bei ConvertToYV12 kannst du die Farbmatrix angeben + Chromaresample. Damit wird zum einen bei einer Konvertierung BT.709 TV Range genutzt, statt BT.601 TV Range und mit Chromaresample sorgst du dafür, falls du mal einen höheren Farbraum hast und es auf YV12 reduzierst, das die Farben besser erhalten bleiben bei der Neuverteilung in YV12.

    Siehe Zeile 5.
    Sollte nun wieder laufen.


    Du hast Zeile 5 in deinem Skript nicht an Zeile 5 in AudioDub übergeben, sondern Zeile 2. Und Zeile 2 ist dein Input.


    Somit ist also auch dein Output genauso groß wie dein Input.


    Zudem hast du bei dir in Zeile 2 in deinem Skript am Ende "Video" zu stehen, was aber zusammen mit AssumeFPS keinen Sinn macht.


    Da kommt mir der Gedanke das du aus dem Skript ein Anteil gelöscht hast ausversehen ^^


    Und das Return am Ende kannste dir sparen. Das ist erst wichtig, wenn du irgendwie Modular arbeiten willst damit und somit alle vorherigen Variablen ungültig machen willst.


    Das Return gibt ein Clip zurück an Hauptskript und das Hauptskript verlässt du ja nicht. ^^

    Die CPU Affinity kann man auch ganz easy über den Taskmanager einstellen.
    Programm auswählen und Zugehörigkeit einstellen. Bedenke aber das dies während des laufenden Prozesses geschieht.


    Anders kann man in Windows die Affinity via der Commandline ansteuern und somit z.B. Programme mit den zugeordneten CPU Kernen starten.


    Das geht mit dem Parameter "Start"


    Ein Beispiel für ein Programmstart und Nutzung mit nur einer CPU:
    start /affinity 1 "calc.exe"



    Oder du verwendest das Tool EasyToolz


    http://easytoolz.net/easytoolz/


    Über die CPU Affinity kann man ein oder mehrere Prozesse hinzufügen und diese den CPUs zuordnen lassen die sie nutzen sollen.


    So z.B. MSI AB nur auf CPU 1 und das Spiel nur auf CPU 2 und 3 und die restlichen CPUs wären dann immer noch frei.

    @De-M-oN


    Also doch richtig auch bei Streaming mit VBR zu encoden. ^^
    Kann man ja noch eingrenzen mit vbr-max und vbr-min.


    Wollt schon sagen. CBR verbraucht ja mehr. VBR variiert da wenigstens noch.



    Und ja, jetzt wo du es sagst und ich noch mal nachgesehen habe. UTVideo kann kein YV24. ^^ Sry. xD Passiert.


    Ich editiere das oben noch mal. ^^

    Wieviel Platz verbraucht das ca wenn ich knapp 4 Std Aufnehme?

    Es gibt keine Pauschalen Angaben wie groß eine Aufnahme wird. Das hängt von zig Faktoren ab.
    Die wichtigste und Unvorhersehbare ist die Kompression von Frames bei einem Kompressionscodec.


    Ein Kompressionscodec kann Verlustfrei sein (Lossless), kann aber auch Verlustbehaftet sein (Lossy)


    UTVideo, MagicYUV, Lagarith, und und und ... sind Verlustfreie Kompressionscodecs
    h264, VP9, usw. sind Verlustbehaftete Kompressionscodecs.


    Und wie Stark eine Kompression auf Frames auswirkt über ein gesamtes Video hinweg ist schier unmöglich zu sagen. Das variiert.


    4 Std Tetris bei 320x200 60FPS, RGB Farbraum und du wirst vllt. auf 1 oder max. 2 GB kommen.
    4 Std Wolfenstein3D bei 320x200 60FPS, RGB Farbraum und du wirst vllt. über 10 - 15 GB kommen.


    Erhöht man die Auflösung werden die Frames schon komplexer. YV12 (YUV 4:2:0) würde aber wieder die Aufnahme etwas kleiner halten da nur die Hälfte an Informationen gespeichert wird.


    Und dann kommt es wie im Beispiel genannt auf das Spiel an. Existieren ruhige oder schnelle Szenen? Wie viele Pixel müssen gespeichert werden? Welcher Farbraum? Wie detailiert sind die Frames? Und lassen sie sich gut oder schlecht komprimieren.


    Kann man das auch mit Nvenc H.264 machen? Wegen grafikkarten nutzung usw, oder eher lieber nicht?^^

    Wenn dir das NVENC erlaubt, steht es als Auswahl eigentlich direkt drin mit "Lossless"


    Können tut der Encoder das, die Frage aber ob OBS das auch unterstützt so und anbietet weiß ich leider nicht, da ich eine AMD Grafikkarte habe und da keine Option in OBS für habe das ich NVenc auswählen kann. Da dies nur bei NVIDIA Karten angezeigt wird die auch Experience unterstützen.




    Kann ich dann damit auch gut genug Streamen?



    Qualitäts Regulierungsmethode sollte schon VBR sein. Warum?
    Weil eine variable Bitrate dir es ermöglicht bei weniger anspruchsvollen Frames weniger Bitrate auf bestimmte Frames zu geben und somit der Upload auf einer Streaming Seite schneller geht.
    Da gibt man dann am besten eine vbr-max und vbr-min mit an um in diesen Bitraten Bereich sich zu halten.


    Bei CBR hast du für jeden deiner Frames in der Aufnahme immer die gleiche Bitrate und das muss nicht sein. Damit stopfst du nur dein Upload zu. ^^


    Eine Variable Framerate solltest du, bzw. kannst du beim Streaming anwenden. Diese würde dann dafür sorgen das während des Streamings nicht alle Frames hochgeladen werden müssen, sondern nur wenn es nötig ist.
    Das heißt: Bist du gerade in einem Menü und da bewegt sich nicht viel, dann wird die Zeit die der Frame im Standbild verbringt größer und wenn du dich viel bewegst wird der Zeitabstand zum nächsten Frame geringer. Das spart Bitrate beim Streaming.


    Ein Keyframeintervall hätte ich auf auto eingestellt.


    Und die Bitrate richtet sich dann nach der Leistung deines Uploades zu deinem Streaming Portal. Da musst du dann selbst tüfteln und probieren.


    Weil wenn ich dir jetzt irgendeine Bitrate nenne, dann schreibst du die bestimmt auch rein und glaubst das es damit toll aussieht. ^^
    Nein. Funktioniert nicht so einfach ^^
    Die Bitrate ist eine Qualitätsangabe die dann dein Upload auf den Hoster von dein Streaming Portal schaffen sollte. Das musst du a) über dein Streaming Portal checken welche Bitraten/Uploadraten dir gewährt werden und b) wie schnell ist dein eigener Upload?


    Das ein wenig in Balance bringen.


    Eine Bitrate von 2500 habe ich früher für 720p Aufnahmen genommen, wenn ich diese Encodieren wollte. 2500 kb/s wäre in meinen Augen für 1080p recht arg.


    Wie gesagt, probiere da ein wenig. Am besten setzt du dich mit nem Freund zusammen in TS, du erstellst ein Stream und er sagt dir dann ob das gut ankommt oder nicht. Wäre der einfachste Weg. ^^

    Hab das aber bisher nicht hin bekommen das OBS Studio lossless Aufnimmt... Finde auch nichts dadrüber, hab 2 Tage gesucht und dann aufgegeben...

    Nicht irritieren lassen bei den Bilder wenn bestimmte Settings woanders liegen bei den neuen Versionen. Das Grundprinzip bleibt aber gleich:


    Lossless mit x264 geht so bei OBS:


    Und Lossless mit z.B. UTVideo und PCM Audio geht so:



    Dazu wichtig ist die Einstellung des Farbraumes zu wissen + wie man die Auflösung einstellen sollte:





    Und ganz ganz ganz wichtig:
    Bei x264 funktionieren als Farbraum (Farbformat heißt es bei OBS) nur NV12, I420 und I444.


    Und wenn du mit UTVideo aufnehmen solltest, dann funktioniert nur I420 und RGB


    NV12 und I420 sind YUV 4:2:0 Farbräume (NV12 bitte immer bevorzugen, wenn machbar. z.B. bei x264)
    I444 ist ein YUV 4:4:4 Farbraum
    Und RGB sollte denk ich klar sein. RGB hat ebenfalls ein 4:4:4 Verhältnis der Farbunterabtastung.


    Farbmatrix und Farbbereich für den YUV sollte Youtube-Entsprechend sein. Also BT.709 und Begrenzter (Teilweise) Bereich.


    Wichtig ist für die Qualität das Basis und Ausgabeauflösung nicht skaliert wird. Wenn sie nämlich unterschiedlich sind, dann wird mit einem entsprechend eingestellten Skalierer skaliert und das sieht nicht schön mehr aus dann. Lieber 1:1 aufnehmen ^^


    Alle Bitratenangaben die du grad auf den Bildern siehst sind außer Kraft gesetzt.
    Bei x264 wird das mittels qp=0 erreicht
    Und über FFmpeg mit UTVideo gibt es ebenfalls keine Bitrate, da UTVideo nur Lossless kann. Sprich max. Bitrate.
    Und über FFmpeg mit PCM Audio ist es genau das gleiche. pcm_s16le steht hier für PCM signed 16Bit little endian und reicht absolut aus.


    Und nicht vergessen Audio in 44.100 Hz oder 48.000 Hz aufzunehmen. Aber EINHEITLICH bitte. Sonst kann es sein das deine Schnittsoftware den tollsten Murks mit macht. ^^


    Das zu Lossless.



    Das mit x264 funktioniert neben der Studio Version von OBS auch mit der normalen OBS Version.

    Die Sound Einstellungen in Windows habe ich alle gleich: 41.100 Hz, 16 bit.

    44.100 Hz


    41.100 Hz wäre sehr merkwürdig wenn du das einstellen kannst. ^^



    Welche Audiospur ist denn Asynchron? Mikrofon? Game?


    Und Asynchron wird es, wenn du die Frequenzen resamplen tust. z.B. 48.000 Hz auf 44.100 Hz
    Das darf nicht resamplet werden, sondern muss lediglich geändert werden. Das ist ein Unterschied dann.


    Die Bittiefe (Sampletiefe) hat rein gar nix damit zu tun das Audio asynchron wird.


    Entweder das verwendete Gerät bei der Aufnahme. z.B. WASAPI on Onboard bei Mikrofon kann Probleme verursachen. Da nimmt man dann DirectSound.


    Oder halt falsche Audiofrequenz aufgenommen bzw. wenn schon mit falscher Frequenz aufgenommen wird danach diese falsch geändert und das führt zu Asynchronität.


    Dazu wäre halt eine Mediainfo der Aufnahme interessant, dann sieht man das. Und wenn du dann noch bei dieser Aufnahme sagst das es Asynchron ist, kann man dir auch anhand der Mediainfo sagen was du gerade machst das es Asynchron wird.

    Zu deiner Frage, wann es das tun würde, wie z.B. bei meinem Beispiel wo der Spieler in einem 30 minütigen Video nach 15 Minuten von einem sehr hellen Lichtintensiven und detailverliebten Raum in sehr düstere, detailarme Katakomben gelangt. Nicht dass das in der Praxis jetzt den Unterschied machen würde, aber es geht nur im die Theorie, wenn es so wäre.

    A) CRF arbeitet schon mit einer perfekten Verteilung der Bitrate. Detailierte Sachen bekommen mehr Bitrate, detailarme Sachen bekommen weniger. Daher ist das Arbeiten mit Zonen schon total unnötig und wäre eher bei festen Bitraten Angaben angebracht.
    B) Die Zonen sind als einzige, Einstellungen annehmen die unter den globalen Einstellungen laufen. Und das sind nicht grad viele Einstellungen und macht gerade bei CRF auch recht wenig Sinn.



    Kann ich vollkommen nachvollziehen und ich kenne die Enigma auch. Nur ist jetzt ja so, dass man sich weder im Krieg befindet, noch Programme so unflexibel sind wie die Enigma zur technischen Machbarkeit im WW2.


    Natürlich müsste im encrypt eine Information enthalten sein, die einer high-tech Enigma erlaubt, sobald sie diese liest, bestimmte Walzen und Positionen auszutauschen, um den folgenden Text der reinkommt weiterhin korrekt decrypten zu können. Sowas müsste doch programmierbar sein. Dass aktuelle En- und Decoder sowas nicht können mag ja sein, aber technisch nicht machbar hieße für mich, dass sich zwei so zusammenarbeitende Programme auch nicht entwickeln ließen, weil es im Encodingprozess technisch in dem Verfahren eine Hürde gibt, dich derzeit nicht bewältbar ist, wenn es darum geht, mittendrin die Paraemeter zu verändern, und einen maßgeschneiderten Decoder zu haben, der diesen Wechsel auslesen und sich entsprechend anpassen kann.

    Das mit der Enigma war ein sehr sehr sehr vereinfachtes Beispiel. In der Videotechnik kannst du nicht einfach mal so mittendrin die Einstellungen von einem Video verändern. Geht einfach nicht.


    Und es würde nicht mal in der Theorie machbar sein. Das mag vllt. beim Enigma Beispiel noch klappen mit den Walzen etc. Aber bei den heutigen Codecs für Video oder Audio geht das einfach nicht. Und es wäre auch Schwachsennig sowas zu haben. ^^


    Das ist wie als würdest du eine SSDHDD haben xD Ja, mit was arbeitet sie denn nun? Mit Halbleiter oder mit magnetischen Platten? xD Das funktioniert nicht. Beide haben doch ganz andere Charakteristika.


    Du kannst sie womöglich noch als eine Festplatte auf dem Rechner laufen lassen. Das ist dann bei nem Video aber auch nur so als würdest du 2 Videos in eine Playliste stecken. Sie arbeiten dennoch seperat.



    Vllt. ist es wirklich besser dies über Team Speak zu besprechen, als das wie den Thread hier unnötig weiter in die Länge ziehen ^^

    Ich benutze gar kein AVISynth

    Doch benutzt du. SSM erstellt ein AVISynth Skript und AVISynth wird von MeGUI genutzt. Da kommst du nicht drum rum. Weil MeGUI nunmal mit AVISynth von Haus aus arbeitet.


    Was genau ist die Pipeline? Das SSM script? Im x264 encoder ist das ja nur der csp Befehl.

    AVISynth ist ein Frameserver. Video und/oder Audio kommt rein, wird decodiert und kommt als unkomprimiertes entschlüsseltes Material an den Ausgang an.


    Der Ausgang ist allerdings offen.


    Da kann man jetzt ein Encoder zum Beispiel anbringen.


    Da AVISynth ein 32Bit Prozess ist und nicht nativ mit einem 64Bit Prozess arbeiten kann, wird eine Pipeline dazwischen geschaltet.


    Bei MeGUI wird dazu avs4x264mod.exe verwendet.


    Die Pipeline sorgt dafür das ein Signal durchgeschleift wird. Stell dir einfach ein Verbindungsrohr vor das von Fabrik A über den Ozean mit Fabrik B verbunden ist und darin sich ein Fließband befindet.


    Also hast du folgendes Schema:


    Dein Video wird mittels dem SSM Skript (AVISynth 32Bit) decodiert und mittels einer Pipeline (avs4x264mod) an x264 64Bit geleitet, das dann wieder das Video encodieren kann.


    Simple:
    Video -> Decodierung -> Verarbeitung -> Zwischenergebnis -> Weiterleitung -> x264 (Encodierung) -> fertiges Video.


    Ein 32Bit x264 bräuchte keine Pipeline. Hier würden beide Fabriken sozusagen in zwei unterschiedlichen Abteilen sein und beide miteinander ohne Pipeline arbeiten können.

    Dann scheitert es also nicht an der technischen Machbarkeit, sondern daran, dass weder Encoder noch Decoder dafür programmiert sind, soetwas zu berücksichtigen?

    Es scheitert wirklich an der technischen Machbarkeit. Um das zu verstehen musst du dich mal mit der reinen Verschlüsslung von Informationen beschäftigen.


    Die Enigma kennst du, oder? Die aus dem 2ten Weltkrieg?


    Die anzahl der Walzen und Position sind die Einstellungen mit dem eine Textnachricht encodiert wird.
    Um sie dann später zu dekodieren muss das gleiche passieren. Sprich der das Video bekommt muss auch wissen wieviel Walzen und auf welche Position sie eingestellt waren um die Nachricht wieder lesbar zu machen.


    Stell dir vor der Encrypter würde jetzt mitten in der Nachricht irgendwo auf einmal eine Walze entfernen oder eine andere Walzenposition verwenden. Die Anzahl des Verschlüsselten Textes bleibt aber dadurch gleich. Die Codierung hat sich nur geändert.


    Was meinst du was passiert wenn der Decrypter, sprich der der die Nachricht bekommt damit machen soll?


    Im Krieg jetzt den Schlüssel mitzuliefern wäre ne Sau Dumme Idee ^^ Also wird der Decrypter die Nachricht wie üblich entschlüsseln. Und was hat er dann?
    Genau. Eine Textpassage der Nachricht konnte decodiert werden, die andere wo eine Walze entfernt oder eine andere Walzenposition eingestellt wurde ist reiner Kauderwelsch. Sprich immer noch verschlüsselt.



    Das ist jetzt eine vereinfachte Darstellung schon.
    Bei der Codierung von Frames wird es verrückter.


    Was ich damit sagen will ist eigentlich ganz einfach: Der Rechner weiß bei einer Decodierung von zwei unterschiedlichen verwendeten Encodierungseinstellungen wie bei der Enigma z.B. nicht wann es Informationen sind die für uns Unbrauchbar sind. Sondern würde irgendwelche kuriosen Falschinformationen erzeugen. Einfach weil der Decoder nicht weiß ab wann die Decodierung zuende ist.


    Also würde er munter mit einem Schlüssel durchdekodieren, weil er es mit den einen Schlüssel umformen kann.


    Die Frage nun von mir: Warum will man 2 oder mehrmals in einem Video anders Encodieren? Das ist Unlogisch.



    Man kann wie bei einigen Codecs über sogenannte Zonen Bereiche im Videostream selbst etwas anders codieren lassen. Aber immer im Rahmen der globalen Einstellung. Denn die globale Einstellung ist sozusagen der Master Key für das Video.
    Sprich alles was mit Bitrate oder der GOP zu tun hat, lässt sich noch im kleinen Rahmen beeinflussen über die Zonen. Das ist aber bei einem Qualitätsencode wie CRF total banal und bringt einen nix. Das wäre besser in Schnittprogrammen aufgehoben die den Mainconcept Encoder anbieten. Machen die nur nicht. ^^



    Wir können, wenn du Zeit haben solltest, das Ganze noch mal etwas genauer anschauen und ich kann dir dann auch zeigen was ein Video ohne Header macht.
    Es scheitert wie gesagt an der technischen Machbarkeit. Es scheitert schon daran das du nicht weißt wie das Ganze System arbeitet ^^
    Das kann ich dir gerne erklären und auch zeigen, bzw. vorführen. Aber das ganze Zusammenspiel musst du mal betrachten.

    Matroska unterstützt zwar, wenn ich mich richtig erinnere, mehrere Videostreams, die auch unterschiedlich kodiert sein können, allerdings nur als separater Track - ähnlich wie die Sprachen auf einer DVD. Nacheinander abspielen wird wohl nicht Teil der Spezifikation sein.

    Ist ja auch logisch. Jeder Stream hat einen Header. Im Falle das sie in einem Container drin sind hat halt jeder Track (Stream) einen Header. Und der Container selbst besitzt auch einen Header, der die Informationen der einzelnen verwaltet. Das kann man auch gerne in einem Hexeditor nachvollziehen. ^^


    Die Funktionalität, dass unterschiedliche Videos nacheinander abgespielt werden, müsste in den Spezifikationen von Matroska integriert sein, und von den Muxern, Splittern / Demuxern und evtl. Decodern umgesetzt werden.

    @Chron Was es halt praktisch nicht ist. ^^ Das "müsste" unterstreiche an der Stelle mal. ^^



    Ja, etwas ähnliches ist auch bereits mit den Zonen in x.264 umgesetzt. Damit kannst du in von Frame X bis Frame Y Einstellungen überschreiben - nicht alle, aber in gewissem Rahmen. Vielleicht ist das ja ausreichend für dich. Details zur Verwendung findest du auf Encodingwissen und der x.264-Referenz. In MeGUI müsste auch eine rudimentäre GUI dafür integriert sein. Genauere Informationen zu dem Thema habe ich nicht - ich hab bei mir bisher kaum Bedarf dafür gesehen.


    Das ist mal die Hilfsreferenz aus der x264 zum Befehl zones

    Code
    --zones <zone0>/<zone1>/... Tweak the bitrate of regions of the video
    Each zone is of the form
    <start frame>,<end frame>,<option>
    where <option> is either
    q=<integer> (force QP)
    or b=<float> (bitrate multiplier)


    Erklärung von Encodingwissen:
    http://encodingwissen.de/codecs/x264/referenz/#zonen


    Einfache Erklärung von mir:
    Die Art wie Encodiert wird während eines Prozesses kann beeinflusst werden. Das ist wie als wenn man in ner Fabrik eine Sonderanfertigung machen lässt, es aber immer noch die gleiche Sorte ist.


    Sprich der Standard Turnschuh wurde jetzt um eine Einlegsole und eine warme Fütterung verbessert. Die Randdaten müssen aber immer der Norm entsprechen.


    @RealLiVe Das was x264 mit zones macht, könntest du auch mit MKVmerge machen. Sprich Video 1 ist komplett mit nach ein Muster encodiert worden, Video 2 wird ebenfalls nach diesem Muster kodiert, bekommt aber als Extra Randdaten (zones Einstellung) mitgeliefert.


    Jetzt könntest du diese 2 Videos aber immer noch mit MKVmerge zusammen setzen.


    Schau mal was es damals unter XVID gab: http://www.divx-digest.com/articles/xvid_setup_page3.html
    Da gab es ebenfalls solche Zones. Das ist nix neues, sondern ein alter Hut an sich. ^^

    *hust* bei mir steht im SSM immer wenn ich ein Video Qeue, dass ich keine Konvertierung zu YV12 hinzugefügt habe und ob ich das Farbraum-Problem selbst lösen will.

    Das fragt dich MeGUI. Nicht SSM.


    Ist das eine Standard-Abfrage oder weißt mich dein Programm darauf hin, dass meine Einstellungen sich irgendwo beissen?

    MeGUI weißt dich darauf hin das du einen unüblichen Farbraum nutzt und fragt dich halt ob du nicht lieber in YV12 encodieren willst. Was du mit nein beantwortest.
    Dann stellt MeGUI fest das kein YV12 anliegt und ob du dieses Problem selbst lösen willst. Das beantwortest du mit ja.


    Weil du willst A) kein YV12 und B) weißt du ja hoffentlich das du ein YV16 bzw. YV24 oder gar RGB Video an MeGUI gesendet hast.


    Wenn du die Fragen in der Reihenfolge so beantwortest, dann hast du dein entsprechenden Farbraum im Skript ungeändert anliegen an der Pipeline und Encoder.


    Musste nur noch für sorgen und überprüfen das A) die Pipeline nicht YV12 daraus macht (am besten in der Log nachschauen) und B) die richtige Einstellung beim x264 Encoder getroffen hast. Siehe dazu die Hinweistafel im SSM.


    Und, bezüglich deines Zitates, heißt das wenn ich in YUV 4:4:4 aufnehme brauche ich gar nicht YV24 auszuwählen sondern kann's auf "gleich" lassen? Macht das einen Unterschied?

    Das "gleich" ist nur wenn du zu 100% sicher bist das das Skript auch diesen Farbraum durchschleusen tut. Das heißt, du solltest ein wenig Ahnung von AVISynth haben. Ansonsten stellste YV24 ein. Da ändert sich dann nix dran und sicherer ist es auch.


    Bei "gleich" würden alle Farbkonvertierungen im Skript selbst entfallen.


    Wenn du YV24 eingestellt hast, würde das Skript versuchen die Videos auf YV24 zu konvertieren. Liegt ein YV24 Video vor und kommt durch diesen Konvertierungsfilter, passiert da 0. Da der Farbraum schon identisch ist. Ist jetzt aber dein Video ein RGB Video geworden, weil es nicht richtig von AVISynth eingelsen worden ist, dann würde es in YV24 konvertiert werden und würde trotzdem funktionieren. Das würde bei "gleich" nicht gehen.


    RGB würde auf die Pipeline dann treffen, die Pipeline kann das nicht lesen und konvertiert es in YV12 um und schickt das dann an den Encoder als YV12 Material. Und wenn der Encoder noch auf YV24 eingestellt ist für den Output, dann machst du YV12 zu YV24 und hast somit nix gekonnt. Da hätteste dann auch gleich YV12 aufnehmen können ^^

    Ok aber was ist, wenn ich zwei paar Schuhe in einen Rucksack packen will, weil ich weiß, dass ich auf dem Weg erst durch Matschpfützen laufen muss, danach aber zu Villa X komme wo ich für eine edle Party eingeladen bin und das andere paar Schuhe brauche?

    Naja, dann hast du 2 Anforderungen und für je ein Szenario eine entsprechende Encodierung. Sprich immer ein Video pro Szenario.


    Ich kann natürlich an guten Tagen die Schuhe nehmen und an regnerischen die Stiefel, aber wenn ich im Voraus wüsste, dass beides auf einer Strecke kommt, was dann?

    Das blöde ist ja das du das ja beim Video machen weißt. Ist wie als würde die Wettervorhersage immer funktionieren.


    2 gleiche Schuhe, sprich 1 Paar sind immer ein Video. Sie sind aber immer identisch die du grad trägst. ^^


    Wenn du jetzt z.B. ein Video hast das mit WMV9 kodiert wurde in 1080p30 und das ist dein Intro, dann ist es jetzt mal ein unbequemer schwarzer rechter Stiefel.
    Und dann hast du dein Mainvideo in h264 kodiert mit 1152p60. Das ist dann dein bequemer weißer linker Turnschuh.


    Fällt dir was auf? ^^ Kannst nicht beide tragen.


    Bzw. Praktisch schon, aber das wäre nicht normal, sondern Chaotisch. ^^



    Natürlich meinte ich nicht Dinge wie die Auflösung plötzlich zu halbieren oder andere Dinge die einem in's Auge fallen, und ich meinte auch nicht, ständig zwischen zwei Einstellungen zu hüpfen, sondern Einstellung B nur nach A kommen zu lassen, beide paar Schuhe in einen Rucksack.

    Und das geht praktisch nicht.


    Du hast 2 Videos mit unterschiedlichen Charakteristika. Stiefel und Turnschuh die du als Paar bezeichnest.


    Geht einfach nicht.



    Du hast bei Regen Szenario A) mit der WMV9 Datei z.B. und du hast Sonne bei Szenario B) mit der h264 Datei.
    Das kann auch der gleiche Codec sein, nur unterschiedlich eingestellt und schon stimmt das Szenario nicht mehr.


    Du musst sie vorher angleichen. Und das geht nur indem du zuerst dekodierst und dekomprimierst, dann aufeinander abstimmen tust und dann erneut encodierst.


    Sprich du machst aus dem rechten Stiefel ein Turnschuh und der hat dann die gleichen Charakteristika wie der linke Turnschuh. Und dann passen sie auch für das Szenario B.


    Du kannst nicht einfach mal ohne irgendeine Art der Neuberechnung einfach zwei verschiedene Videos zusammensetzen. Das geht einfach nicht.


    MKVmerge kopiert nur, genauso wie es MyMP4box tut und alle anderen Muxer.


    Das heißt, würden diese beiden Videos in einer File ablaufen, mit Einstellung A und mit Einstellung B, würde optisch nichts unpassendes passieren.

    Und du glaubst wirklich das der Decoder einfach so zwischendurch mal die Decodierungsroutine im laufenden Prozess ändert, ja? ^^


    Das wäre cool. Dann hast du als einziger eine Verschlüsslungs und Komprimierungstechnik erfunden die mehrere Einstellungen während der Decodierungsphase berücksichtigt. ^^ Genial xD


    Sollteste dann Patent anlegen bei der Telekommunikationstechnik ^^



    Du stellst dir das womöglich etwas blöd vor.


    Pass auf: Du hast angenommen 2 Videos die mit dem gleichen Codec encodiert worden sind. ABER mit 2 unterschiedlichen Einstellungen. z.B. andere GOP Länge oder das eine arbeitet mit 3 B-Frames, der andere mit 4.


    Und jetzt stell dir vor das der Decoder diese Informationen braucht um das Video zu dekodieren.


    Er fängt also mit Schlüssel 1 an zu dekodieren bis er zum Video kommen würde das nicht mehr den Einstellungen von Video 1 entspricht. Was glaubst du würde er bei Video 2 machen?


    Den Schlüssel für Video 2 nutzen? Woher denn? Er weiß doch gar nicht das da Video 2 anfängt. Für den Decoder ist das dann immer noch Video 1 und schmeißt dir eine Fehlermeldung an den Kopf, weil er das nicht versteht.


    Ist ne ganz simple Sache.


    Um ein Video zu dekodieren, gibt es den Header. Ein Stream hat einen Header jeweils.


    Bedeutet dein Video besteht immer aus ein Stream und einen Header. Im Header steht der Schlüssel zum dekodieren des Videos. Würde der nicht drin stehen, wäre es ein unbekanntes RAW Video das nicht dekodiert werden kann.


    Und jetzt willst du 2 Streams zusammensetzen mit 2 unterschiedlichen Einstellungen.


    Sagen wir jetzt mal das die 2 Streams unterschiedlich sind, sich aber dennoch zusammensetzen lassen würden. Du hättest ein Stream. Und was machst du mit dem Header? Da kann jeweils nur ein Schlüssel für den Decoder drin stehen. Einer würde auch nur von den beiden rein gehen.


    Bedeutet im Endeffekt das du das andere Video nicht dekodieren könntest und es Fehlermeldungen geben würde. Eventuell sogar ein Bluescreen, weil der Decoder auf einmal auf Speicher zugreift den er gar nicht abfragen durfte. Einfach weil der Informationsfluss sich geändert hat.

    ich glaub beim x264 konnte man Videos nicht mal zusammen muxen, wenn diese nicht den gleichen CRF haben.

    Durchaus möglich. Weiß ich grad nicht.


    Theoretisch kann man aber VBR Videos die ja unterschiedliche Bitraten halt haben zusammensetzen. Und an sich ist CRF ja nix anderes. Aber wie gesagt, sowas mache ich ja so gut wie nie das ich über MKVmerge jetzt Videos zusammensetze. Weil wenn ich Videos aufnehme, dann encodiere ich die so, das ich hinterher da nix zusammensetzen muss. ^^ Sondern Uploadfertig sind. Bzw. Anschaubereit sind ;D

    Was genau muss ich dann im SSM Einstellen, damit die Farben in 4:2:2 bleiben? Die Option "Gleich" wählen?

    Die Option "Gleich" kannst du wählen, sofern du zu 100% sicher bist das der Farbraum YUY2 ist und dieser auch durch das AVISynth Skript erkannt wurde.


    Wenn du dir dessen nicht sicher bist wählst du natürlich YUY2 als Farbraum aus im SSM. Das ist der sicherste Weg dann.


    Und dann ist es bei YUY2 ganz wichtig das du den "avs4x264mod YUY2/YV16 Fix" anschaltest.


    Damit wird am Ende des Skriptes das YUY2 in YV16 umkonvertiert. Da passiert dann aber nix, da beide Farbräume 4:2:2 sind.


    YUY2 ist ein Interleaved Farbraum, während YV16 ein Planar ist. Das entsprechend zu erklären ist hier jetzt überflüssig, da wie gesagt beide vom Inhalt her identisch sind und mit den Informationen nix passiert.


    Das ist wichtig damit die Pipeline avs4x264mod die nur YV24 (YUV 4:4:4), YV16 (YUV 4:2:2) und YV12 (YUV 4:2:0) verstehen kann (sprich nur Planar Farbräume) die Information auch korrekt durchschleusen kann an den x264 Encoder.


    Den Rest kannst du im SSM aus der Hinweistafel entnehmen. ^^