VirtualDub umschlüsseln

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

  • VirtualDub umschlüsseln

    Anzeige
    Da ich ja momentan Flv Videos habe die mit dem x264 Encoder Lossless abgespeichert wurden, bin ich auf der Suche diese Dateien einfach zu bearbeiten.

    Solange ich auf der Suche bin, habe ich mir überlegt die Dateien mal mit VirtualDub in UT Video umzuschlüsseln.
    Jetzt habe ich halt ein paar Sachen die nicht so wollen wie ich will bzw, die etwas verbessert werden müssen.
    Die Video werden mit einem Skript das ich übern SSM erstellt habe in VirtualDub geladen.

    Ich möchte jetzt die Performance verbessern.
    Irgendwas was limitiert.
    H.264 Codec -> FFMS2 -> VirtualDub -> UT Video

    Skript
    Spoiler anzeigen
    ​### SagaraS Scriptmaker - Version 5.6 ###

    ### Lade Plugins und setze die globalen Variablen ###
    LoadPlugin("D:\Programme\SagaraS Scriptmaker\Plugins\FFMS2.dll")
    Global breite = 2048
    Global hoehe = 1152
    Global AR = 0

    ### Lade Videoquellen ###
    SetMTMode(3)
    AVIload("A:\Livestream\30.5.2015\Aufnahme 1.mp4", 1, 0, 0, -0, -0, "Auto", "Igno.", 0, 0)

    ### Filter Verarbeitungszone ###

    ### Funktion für Video-Laderoutine ###
    Function AVIload (String file, int loading, int cl, int co, int cr, int cu, string pixtype, string afps, int fpsn, int fpsd) {
    (loading == 1) ? FFIndex(file) : nop()
    clip0 = (loading == 3) ? LWLibavVideoSource(file) : (loading == 2) ? Import(file).KillAudio() : (loading == 1) ? FFVideoSource(file, threads=1) : (pixtype == "Auto") ? AVISource(file, false).KillAudio() : AVISource(file, false, pixel_type=pixtype).KillAudio()
    clip1 = clip0.AutoFPS(afps, fpsn, fpsd).Cropping(cl, co, cr, cu)
    Return (clip1.width == breite && clip1.height == hoehe) ? clip1.ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline36") : Clip1.Resize()
    }

    Function AutoFPS (Clip clip0, string afps, int fpsn, int fpsd) {
    rate1 = (afps == "Auto") ? (Round(Float(clip0.framerate * 1000)) / 1000) / 2 : nop()
    rate2 = (afps == "Auto") ? Round(clip0.framerate) / 2 : nop()
    rate = (afps == "Auto") ? (rate1 == rate2) ? 1 : 1001 : (afps == "Igno.") ? clip0.frameratedenominator : fpsd
    ratefaktor = (afps == "Auto") ? (rate == 1001) ? 1000 : 1 : nop()
    clip0 = (afps == "Auto") ? (rate == 1001) ? clip0.AssumeFPS(Round(clip0.Framerate) * 1000, rate) : clip0.AssumeFPS(round(clip0.framerate), rate) : (afps == "Igno.") ? clip0.AssumeFPS(clip0.frameratenumerator, rate) : clip0.AssumeFPS(fpsn, rate)
    Return clip0
    }

    Function Cropping (Clip clip0, int cl, int co, int cr, int cu) {
    clip0 = (clip0.IsRGB32() == True) ? clip0.ConvertToRGB24() : clip0
    Return (cl != 0 || co != 0 || cr != 0 || cu != 0) ? clip0.Crop(cl, co, cr, cu) : clip0
    }

    Function Resize (Clip clip1) {
    clip1 = (AR == 1) ? ((float(Clip1.height * breite) / clip1.width) / 2 == round((float(Clip1.height * breite) / clip1.width) / 2)) ? ((float(Clip1.width * hoehe) / clip1.height) / 2 == round((float(Clip1.width * hoehe) / clip1.height) / 2)) ? clip1 : clip1.ConvertToRGB24(matrix = "Rec709") : clip1.ConvertToRGB24(matrix = "Rec709") : clip1
    clip1 = (AR == 1) ? (((clip1.width * hoehe) / clip1.height > breite) ? Clip1.Spline36Resize(breite, ceil(float(Clip1.height * breite) / clip1.width)) : Clip1.Spline36Resize(ceil(float(clip1.width * hoehe) / clip1.height), hoehe)) : clip1.Spline36Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline36")
    back = (AR == 1) ? (0 == 1) ? ImageReader("", 0, clip1.framecount - 1, clip1.framerate).ChangeFPS(clip1.frameratenumerator, clip1.frameratedenominator).Spline36Resize(breite, hoehe).ConvertToYV12(matrix = "Rec709", ChromaResample = "Spline36") : BlankClip(clip1, width = breite, height = hoehe, pixel_type = "YV12").KillAudio() : clip1
    Return (AR == 1) ? Overlay(back, clip1, (back.width - clip1.width) / 2, (back.height - clip1.height) / 2) : clip1
    }


    Ich glaube nicht das der Decoder des H.264 Limitiert.
    Zudem habe ich es schon versucht über mehrere VirtualDub Instanzen die Geschwindigkeit zu erhöhen, hierbei hat jedes VDub seinen eigen Ordner.
    UT Video steht auf 12 Thread.
    Jetzt wäre die Frage ob FFMS2 schuld sein könnte und wie man hier die Geschwindigkeit verbessern könnte.
  • CoRori schrieb:

    Hast Du es schon über das DirectShow-Plugin für VD versucht? Ich hatte immer recht enorme Einbußen über FFMS(2), warum auch immer


    DirectShow sollte aber bei Verlustquellen gemieden werden.


    Tust du beim codieren dir die Vorschau anzeigen lassen?
    Sonst hast ja die ganze Zeit noch den Decode auf liegen

    Show Input und Show output beim progress fenster nicht angehakt haben.

    Ansonsten weiß ich erstmal auch nichts.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Anzeige

    GelberDrache92 schrieb:

    meine ist doch Lossless oder reicht hier schon der Verlust des Farbraums aus?


    Es reicht eig. schon die Tatsache das es H.264 ist.

    VfW AVI Lossless kannste via DirectShow machen.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Kompliziert alles nur für eine Umkodierung. ^^ (Falls noch der Wunsch danach besteht xD)

    A) Die MP4 bzw. FLV Datei kann doch gewiss auf dem Rechner decodiert werden, oder?
    B) UT Video wie bei A beschrieben gewiss auch?

    Warum keine direct Kodierung? ^^ Warum über AVISynth? xD

    Das Programm RADVideo nehmen, MP4 bzw. FLV Datei makieren, in AVI kodieren lassen mit Video und Ton und dann nur noch UT Video auswählen. Fertig ist der Salat.


    Ansonsten... die Tatsache das es sich um ein AVC Stream handelt und zusammen mit Audio Stream darauf hindeutet das es sich um Datein handelt die in ein MP4 Container gehören, würde ich sagen das es reicht das man es ummuxen tut.

    Und wenn unser Drache TMPGenc nutzen will wegen dieser Datei, dann würde ich sagen... AVS Datei erstellen und die AVS Datei n TMPGenc laden. (Soviel mir bekannt ist von Hören Sagen, kann das Programm AVISynth Skripte einlesen)

    Skript würde dann so aussehen, falls TMPGenc nur 4:2:2 einlesen kann:

    Quellcode

    1. LoadPlugin("D:\MeGUI\Tools\FFMS\FFMS2.DLL")
    2. File = "Video.mp4"
    3. FFIndex(File)
    4. AudioDub(FFVideoSource(File, Threads=1), FFAudioSource(File)).ConvertToYUY2()
  • Sagaras schrieb:

    Warum keine direct Kodierung? Warum über AVISynth? xD

    Weil mir der Weg als erstes eingefallen ist xD
    Und ich wusste das es mit VirtualDub auf jeden Fall geht, nur da brauch ich ein eine avs um die FFMS2 das Video zu laden.

    Sagaras schrieb:

    Ansonsten... die Tatsache das es sich um ein AVC Stream handelt und zusammen mit Audio Stream darauf hindeutet das es sich um Datein handelt die in ein MP4 Container gehören, würde ich sagen das es reicht das man es ummuxen tut.

    Da TMPGenc bei mir nicht will muss ich auf Sony Vegas zurück greifen.
    Und dieses Programm kann kein Lossless x264 öffnen.
    Zudem die 6er Version von TMPGenc keine Skripte nutzen kann und zudem hätte ich dann wieder das Problem mit dem x264 und der langsamen Decodierung die mir aufen Zeiger geht xD
  • GelberDrache92 schrieb:

    Da TMPGenc bei mir nicht will muss ich auf Sony Vegas zurück greifen.
    Und dieses Programm kann kein Lossless x264 öffnen.
    Zudem die 6er Version von TMPGenc keine Skripte nutzen kann und zudem hätte ich dann wieder das Problem mit dem x264 und der langsamen Decodierung die mir aufen Zeiger geht xD

    Was lernen wir daraus wieder? ^^

    NLEs und MP4 Datein mit dem Profil High 4:4:4 oder NLEs und OBS Aufnahmen? Support fehlt oftmals. xD Die Dinge die man halt zwars gerne Hinterfragen darf, aber mit der Antwort stehts unzufrieden sein wird. :D xD
  • GelberDrache92 schrieb:

    RAD sagt mir er kann die Datei nicht öffnen, wahrscheinlich weil es keine mp4 ist, sondern ein flv.


    Wohl eher das du keinen richtigen h264 Decoder auf deinem Rechner hast der ohne FFDShow läuft, bzw. fehlt dir dessen ein passender Splitter für MP4 Datein.

    Weil RADVideo nutzt an sich kein FFDShow oder DecoderFilter die MPC-HC verwendet.

    RADVideo nutzt nur installierte Decoder und verwendet auch nur installierte Splitter.

    Das heißt wenn RADVideo dir das Video nicht decodieren kann, dann nur weil du eines von den beiden Sachen nicht hast.

    GelberDrache92 schrieb:

    Wenn ich jetzt die flv mit MP4 Mux Gui in einer MP4 bringen möchtw, wird nur eine Datei mit der Größe von 355 Bytes geschrieben

    Wie wäre es mit wenn du es erst zerlegst und dann zusammensetzt? ^^

    Ansonsten vllt mal das Programm YAMB verwenden?

    Oder das Programm X-MediaRecode.

    Bei X-MediaRecode einfach die MP4/FLV Datei reinladen, als benutzerdefiniertes Dateifomat MPEG4 wählen und dann enfach die Streams kopieren lassen (muss angegeben werden).
  • Sagaras schrieb:

    und OBS Aufnahmen?

    MP4s sollten aber laufen, nur isses ja keine.

    GelberDrache92 schrieb:

    RAD sagt mir er kann die Datei nicht öffnen, wahrscheinlich weil es keine mp4 ist, sondern ein flv.


    Was nimmst du auch in den dämlichen flv container auf.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • Sagaras schrieb:

    Ich würde vermuten das er es nicht wusste, sondern einfach dem Programm gesagt haben das die erstellte Datei als Endung MP4 haben soll.


    Dann hätte er auch eine MP4 gehabt.

    Je nach Endung schreibt OBS nämlich.
    Aktuelle Projekte/Videos




    Seit etlichen Monaten komplett veraltete Signatur, wie ihr sicherlich schon bemerkt habt. Habe mittlerweile mehr als 4 Projekte, weshalb die Signatur leider momentan gesprengt ist xD
    Notdürftig die Liste was aktuell läuft: Unreal | Complex DooM (LPT) | DooM 2016 | Need For Speed III: Hot Pursuit | Dirt Rally | Dirt 4 | WRC 7
  • CoRori schrieb:

    Mit dem FFInput-Driver hab' ich keine Probleme ein OBS Video (flv) in VirtualDub zu laden und anschließend umkodieren zu lassen. Vielleicht versuchst du dein Glück

    Dann hätte er es auch gleich mit FFMpeg umkodieren können xD

    Weil ob er nun FFMpeg Bibliotheken in AVISynth oder die für Vdub nutzt ist im Endeffekt total egal für sein Vorhaben xD

    CoRori schrieb:

    //Edit: Benutze die 64-Bit Version

    Auch dies wäre egal. FFMpeg dauert halt beim umkodieren.

    Wurde ja schon von De-M-oN gesagt.

    Und sofern er keine festen Codecs hat um diese MP4 oder FLV Datei zu decodieren, wird es halt nix anderes werden als sich eines der FFmpeg Module zu bedienen xD

    Ob er das nun mit FFMpeg direkt nun macht wie bereits von mir vorgeschlagen, oder mit AVISynth und FFMS2 oder mit VirtualDub via FFinput ist total egal dann. ^^

    Virtual Dub würde ihn denk ich sogar noch mehr ausbremsen als wenn er FFMpeg direkt nutzen würde. ^^
  • Naja, es ging darum, wie es mit VD ginge und es stand im Raum, AviSynth sei eine Bremse in diesem Fall...
    Wenn ich mich recht erinnere, war VD mit eigenem Plugin schneller als mit AVS.

    @GelberDrache92 hatte ja mit den anderen Programmen Probleme und ich wollte ihm eine Lösung bieten...

    Deinen Hinweis FFMpeg direkt zu benutzen habe ich wohl übersehen ^^

    Habe versucht eine Antwort möglichst in VDs Sinne zu finden.

    PS: Das mit den 64-Bit meinte ich nur, weil ich die 32-Bit Variante nicht ausprobiert hatte.

    PPS: Ich rechtfertige mich schon wieder viel zu sehr ||