Beiträge von WiZzardZz

    Ich habe eine Frage:

    wo speichert Hybrid seine Job-Dateien bzw. kann man diese irgendwie extrahieren? Und wie lautet der Befehl um einen bestimmten Job mittels Batch zu starten?

    Hintergrund ist ich würde gerne sozusagen mehrere "Universal-Jobs" anlegen (die z.B. die Codierungseinstellungen, das Audiospur-Handling (externe bereits geschnittene Audiospuren, da liegt aktuell das Problem) und das Tagging enthalten) und diese mittels Batch auf z.B. einen kompletten Ordner anwenden (Szenario ist: Eine komplette Serienstaffel aus denen mittel MeGuis AVS Cutter bereits vor und Nachspann entfernt wurde, d.h. das Audiomaterial liegt bereits geschnitten vor und Hybrid soll jetzt die Aufgabe übernehmen das Video zu encoden (natürlich mit denselben Schnitten - realisiert mittel AviSynth Script und der trim-Funktion - und dann das neue Video mit den bereits vorhandenen Audiodateien zu verbinden, wobei der letzte Schritt auch per Batch übernommen werden kann (Routine ist bereits geschrieben). Ich hoffe es ist verständlich, mir fehlt einfach der Schritt in dem ich sage "Encodiere diesen Videostream mit den und den Einstellungen, danach diesen mit denselben Einstellungen etc.).

    Vielen Dank für die Hilfe

    Anstatt Bilinear oder Bicubic würd eich Gauss empfehlen.

    Ist "GaussResize(*Wert1*,*Wert2*, p=*Wert*)" korrekt und was bedeutet das "p" und welchen Wert soll ich hier eintragen?

    EDIT:
    o.k. habe gefunden, dass "p" die Schärfe angibt, versuche mal den höchstmöglichen Wert von 100 und schaue wie das Ergebnis wird...

    Ach ja, das Video ist PAL wird aber mit 23,976 FPS in VirtualDub angezeigt. Warum auch immer...? Wenn ich manuell 25 FPS eingebe stimmt die Länge.

    Boardsuche oder Google sollten eigentlich beide Downloadlinks anzeigen, damit Du nicht suchen musst:
    http://www.flaskmpeg.info/board/thread.php?threadid=6092

    Thx.

    Sorry, aber zwei Fragen hätt ich noch: Wenn ich es nach meiner Methode (und ich denke mal bei "Auto Encode" müsste es das gleiche sein) mache, wird das Video länger als das Original (denke er encodet mit NTSC 23,976 FPS obwohl die Source PAL mit 25 FPS ist (o.k. das kann man nachträglich noch fixen, oder vorher einstellen), komisch ist nur, dass das Source-Video unter VirtualDub o.ä. auch mit 23,976 Frames angezeigt wird (die Xvid-Version ist nach dem Encoden aber ca. 2 min. länger???).

    Das zweite Problem:
    Die Xvid-Auflösung ist nach dem Encoden riesig (960 x 720), kann ich das irgendwie ändern (also vorher eine geringere Auflösung wählen)?

    EDIT:
    Ich habe den AviSynth-Befehl "BilinearResize" bzw. "BicubicResize" gefunden. Ich trage das mal in das Avisynth Skript ein und schaue, ob es funktioniert.

    zu Punkt 2->3, da musste eventuell die Endung per Hand von h264 auf 264 Ändern damit DGAVCDec die Datei annimmt.

    Nicht nötig, geht auch so...


    zu 6.: MeGui starten, File->Import Profiles und die zip Datei auswählen damit das Profil importiert wird. :)

    Meine Methode müsste doch auch funktionieren oder nicht? Zumindest kann ich als Video profile "Xvid" auswählen.

    zu 7.:
    .avs Datei öffnen, das von mir erstellte Profil auswählen, 'Auto Encode' drücken Zielgröße angeben und Container festlegen -> enqueue. Dann halt Worker erstellen wenn noch keine existieren und Queueabarbeitung starten.

    Ist mein Weg nicht etwas besser oder nur mehr Arbeit und ändert am Ergebniss nix?

    Ps.: Wie gesagt schmöcker mal MeGui Essentials, da sollte eigentlich alles brauchbar erklärt sein, auch wenn die Graphische Oberfläche leichte Änderungen erfahren hat.

    Jo, würd ich ja gern nur leider musst mir noch sagen, wo ich das finde ;).

    Selur, vielen vielen Dank. Dank Dir habe ich es jetzt hinbekommen (hoffe ich zumindest). Ich rekapituliere nochmal (vielleicht kannst mir noch sagen, wo ich noch was besser machen kann):

    Folgendes habe ich gemacht:

    1. Ausgangsfile ist ein H264-Video (V_MPEG4/ISO/AVC) im Matroska-Container (*.mkv)

    2. Video mittels MKVextract(GUI) (MKVtoolnix) extrahiert --> Ergebnis ist ein reines Videofile mit der Endung *.h264

    3. Video mittels DGAVCDec (DGAVCIndex) indexiert (File --> Save Project: hoffe das ist richtig). Ergebnis ist ein *.dga-File

    4. AviSynth installiert und die "DGAVCDecode.dll" (von DGAVCDec) ins Plugins-Verzeichnis von AviSynth kopiert.

    5. Eine Textdatei mit folgendem Inhalt erstellt:

    AVCSource("Pfad zur .dga Datei") also z.B. AVCSource("c:\x.dga")

    und dieses mit der Endung .avs abgespeichert.

    6. meGUI installiert und die Dateien aus Deinem "Xvid - MeGui - 2pass.zip" ins Installationsverzeichnis von meGUI kopiert

    7. Das AviSynt-Skript (*.avs) mit meGUI öffnen, unter "Codec" "XviD" auswähen und das File Format auf "AVI" stellen (ist halt mein Favorit ;)). Unter "Video profile" "Xvid" (Das von Dir erstellte Profil) auswählen. "Tools --> Bitrate Calculator" auswählen und unter "File Size" die gewünschte Größe angeben. Mit "Apply" bestätigen und im Hauptfenster von meGUI ("Input") neben "Video profile" auf "Config" klicken zur Kontrolle, ob die Bitrate übernommen wurde. Die Nachfrage, ob die Änderungen im Profil gespeichert werden sollen, verneinen und das ganze mit "Enqueue" dem Queue zufügen. Auf den Reiter "Queue" wechseln und mit "Start" den Encoding-Prozess starten (Vorher, sofern noch nicht geschehen, einen Worker definieren ("Workers --> Create new Worker").

    Hoffe, das funzt jetzt so. Wie gesagt, falls etwas falsch ist bzw. etwas besser/einfacher gemacht werden kann, wäre ich dabkbar für eine Info, ansonsten vielen, vielen Dank nochmal für die schnelle Hilfe.

    Das liegt daran, dass Du ein 1pas Encoding Profil gewählt hast.

    Nö, hatte 2-Pass gewählt, aber habs mittlerweile gefunden.


    Denke Du solltest mal ins MeGui Essentials gucken, da hab ich mal einiges zu MeGui und der Xvid Konfiguration zusammengestellt.

    Wo finde ich das?



    Was darauf hinweist, dass Dir nicht klar ist was es mit 2pass Encoding auf sich hat. Du willst einen 2ten Encoding-Durchlauf vor dem ersten Encoding Durchlauf durchführen. ;)

    Aha!

    2. DGAVCDecode.dll die mit DGAVCDec kommt ins Avisynth plugins verzeichnis kopieren

    Ok danke, das war eins der Dinge, die mir gefehlt haben.

    Alternativ zu 4.+ kann man auch andere Tools nehmen die AvisynthSkripte (= .avs Dateien) als Quelle akzeptieren um den Videostream um zu wandeln.

    Habe es jetzt soweit, dass ich das AviSynt-Script in meGUI ohne Fehlermeldung öffnen kann und das Video zu sehen bekomme. Hier gibt es jetzt für "XviD" mehrere Profile. Welches ist zu empfehlen (möchte die höchstmögliche Qualität erzielen, das Encoding kann ruhig ne Weile dauern)? Hab jetzt mal "XviD '>90% comp. check'(HQ)" eingestellt. Ist dies zu empfehlen?

    Dann fehlt mir noch die Möglichkeit irgendwo einzustellen, wie groß das erzeugte Video werden soll.

    Habe das AviSynth Skript auch mal in VirtualDub bzw. VirtualDubMod geladen, kann es dort auch abspielen, nur wenn ich es in XviD encoden will (egal ob ich "Fast Recompress" oder "Full Processing Mode" einstelle, "Compression" ist natürlich XviD mit verschiedenen Einstellungen) erhalte ich folgende Fehlermeldung:

    Error! Statsfile not found! --> OK

    VirtualDub Error: Cannot start video compression: The operation is not supported. (error code -1) --> OK

    "VMPEG4/ISO/AVC" ist ein mit x264 oder mit einem anderen MPEG-4 AVC Encoder erstellter Stream, d.h. ob "VMPEG4/ISO/AVC" oder x264 ist egal.

    Ok, hab ich soweit verstanden, danke für die Info.

    1. mit mkvextract den Videostream extrahieren

    Ok, sollte kein Problem sein

    2. mit DGAVCDec den Videostream indexieren (erzeugt eine .dga Datei)

    Sollte ich auch hinbekommen.

    3. mit Avisynth und AVCSource die .dga Datei öffnen

    Hierbei bräuchte ich etwas Hilfe. Wie ist die genaue Vorgehensweise?

    4. das Avisynthskript dem Encoder deiner Wahl als Quelle geben und den Videostream umwandeln

    Hier bräuchte ich auch (wenns geht) eine Schritt für Schritt Anleitung, danke.

    Hallo,

    bitte steinigt mich nicht, wenn die Frage hier schon beantwortet wurde, aber ich hab nix gefunden:

    Habe ein Matroska File, Avi-Mux GUI zeigt mir als Inhalt für den Videostream "VMPEG4/ISO/AVC" an.

    Wie kann ich das Video (Audio spielt erstmal keine Rolle) möglichst einfach zu XviD encoden?

    Habe den XviD-Codec sowie FFDSHOW installiert.

    Wenn du dir selber antwortest, bitte statt dessen [Blockierte Grafik: http://forum.gleitz.info/images/buttons/edit.gif] benutzen.

    Hatte ich nur der Übersicht wegen nicht gemacht...

    Vielleicht ist das Skripting von AviMux-GUI hier geeigneter.

    Uaah, bleib mir weg mit AviMux-GUI Skripten, sowas von unausgereift und verlangt komplette Pfadangaben (für mich nicht geeignet). Demuxen geht übrigens mit AviMux-GUI per Skript nicht, glaub mir, hab lange mit AviMux-Gui experimentiert...

    Oder "VirtualDub.subset.Clear();" muss auch noch raus...

    Danke, ich glaub das wars!


    Ich hoffe, es steht in der Sylia-Dokumentation. Im Moment weiß ich das nicht auswendig.

    Wo finde ich denn diese Dokumentation?

    Raus!

    Funzt leider nicht, dann erhalte ich nur ein 12 kb großes File ohne Inhalt...
    __

    Ich habe festgestellt, dass schon das Audiofile beim demuxen mit folgendem Script nur 22:03 Min. lang wird (vielleicht liegt ja hier der Fehler):

    // VirtualDub job list (Sylia script format)
    // This is a program generated file -- edit at your own risk.
    //
    // $numjobs 1
    //

    // $job "Job 1"
    // $input "..\Temp\Source.avi"
    // $output "..\Temp\Audio.mp3"
    // $state 0
    // $start_time 0 0
    // $end_time 0 0
    // $script

    VirtualDub.Open("..\\Temp\\Source.avi","",0);
    VirtualDub.RemoveInputStreams();
    VirtualDub.stream[0].SetSource(0x73647561,0,1);
    VirtualDub.stream[0].DeleteComments(1);
    VirtualDub.stream[0].AdjustChapters(1);
    VirtualDub.stream[0].SetMode(0);
    VirtualDub.stream[0].SetInterleave(1,500,1,0,0);
    VirtualDub.stream[0].SetClipMode(1,1);
    VirtualDub.stream[0].SetConversion(0,0,0,0,0);
    VirtualDub.stream[0].SetVolume();
    VirtualDub.stream[0].SetCompression();
    VirtualDub.stream[0].EnableFilterGraph(0);
    VirtualDub.stream[0].filters.Clear();
    VirtualDub.video.DeleteComments(1);
    VirtualDub.video.AddComment(0x00000002,"ISFT","");
    VirtualDub.video.AddComment(0x00000003,"INAM","");
    VirtualDub.video.AdjustChapters(1);
    VirtualDub.video.SetDepth(24,24);
    VirtualDub.video.SetMode(0);
    VirtualDub.video.SetFrameRate(0,1);
    VirtualDub.video.SetIVTC(0,0,-1,0);
    VirtualDub.video.SetRange(0,0);
    VirtualDub.video.SetCompression();
    VirtualDub.video.filters.Clear();
    VirtualDub.subset.Clear();
    VirtualDub.subset.AddRange(0,33086);
    VirtualDub.stream[0].Demux("..\\Temp\\Audio.mp3");
    VirtualDub.Close();

    // $endjob
    //
    //--------------------------------------------------
    // $done

    Ich hab auch hier mal die Zeile "VirtualDub.subset.AddRange(0,33086);" rausgenommen, das Ergebnis ist auch hier ein 0 kb File ohne Inhalt :hm:.
    __

    Vielleicht muss man vorher die Länge des Source-Videos bestimmen und VirtualDubMod dies übergeben, hab aber leider keine Ahnung wie...

    Hallo,

    habe nach längerer Zeit auch mal wieder ein Problem:

    Ich habe ein Script für VirtualDubMod erstellt um eine Tonspur in ein vorhandenes AVI mit Tonspur zu muxen und die vorhandene Tonspur zu ersetzen. Das funktioniert soweit auch ganz gut, nur werden alle ausgegebenen Videodateien mit diesem Script genau 22:03 Min. lang :nein:, egal wie lang das Source-Video ist. Hier mal das Script, vielleich findet jemand den Fehler (VirtualDubMod Version ist die 1.5.10.2):

    // VirtualDub job list (Sylia script format)
    // This is a program generated file -- edit at your own risk.
    //
    // $numjobs 1
    //

    // $job "Job 1"
    // $input "..\Temp\Source.avi"
    // $output "..\Temp\Final.avi"
    // $state 0
    // $start_time 0 0
    // $end_time 0 0
    // $script

    VirtualDub.Open("..\\Temp\\Source.avi","",0);
    VirtualDub.RemoveInputStreams();
    VirtualDub.stream[0].SetSource("..\\Temp\\Audio.mp3",0x00000202,1);
    VirtualDub.stream[0].DeleteComments(1);
    VirtualDub.stream[0].AdjustChapters(1);
    VirtualDub.stream[0].SetMode(0);
    VirtualDub.stream[0].SetInterleave(1,500,1,0,0);
    VirtualDub.stream[0].SetClipMode(1,1);
    VirtualDub.stream[0].SetConversion(0,0,0,0,0);
    VirtualDub.stream[0].SetVolume();
    VirtualDub.stream[0].SetCompression();
    VirtualDub.stream[0].EnableFilterGraph(0);
    VirtualDub.stream[0].filters.Clear();
    VirtualDub.video.DeleteComments(1);
    VirtualDub.video.AddComment(0x00000002,"ISFT","");
    VirtualDub.video.AddComment(0x00000003,"INAM","");
    VirtualDub.video.AdjustChapters(1);
    VirtualDub.video.SetDepth(24,24);
    VirtualDub.video.SetMode(0);
    VirtualDub.video.SetFrameRate(0,1);
    VirtualDub.video.SetIVTC(0,0,-1,0);
    VirtualDub.video.SetRange(0,0);
    VirtualDub.video.SetCompression();
    VirtualDub.video.filters.Clear();
    VirtualDub.subset.Clear();
    VirtualDub.subset.AddRange(0,33086);
    VirtualDub.SaveAVI("..\\Temp\\Final.avi");
    VirtualDub.Close();

    // $endjob
    //
    //--------------------------------------------------
    // $done


    [..]nur leider habe ich hier immer eine sehr komische Fehkermeldung und zwar erscheint immer eine Dialogbox, die mich darauf aufmerksam macht, dass nicht genug Festplattenspeicherplatz vorhanden ist und der Vorgang nicht fortgesetzt werden sollte (obwohl über 10 GB Speicherplatz frei sind und die Datei nur 200 MB groß ist). Kanns Dir bei Interesse gern mal zukommen lassen.

    Hab den Fehler gefunden. Man muss bei der Ausgabedatei die komplette Pfadangabe dazuschreiben, es reicht nicht, wenn man z.B.

    START Final.avi

    schreibt, man muss

    START c:\AviMuxGUI\Final.avi (z.B.)

    ins Script schreiben, dann funktionierts auch.

    Finde ich etwas schade, da mein Batch-Vorgang jetzt nicht mehr "universell" funktioniert, sondern die betreffende Zeile des Scriptes immer angepasst werden muss.

    Vielleicht kennt ja jemand einen Befehl um das Script automatisch ans aktuelle Verzeichnis anzupassen?

    Ich habe es jetzt auf eine andere Weise hinbekommen:

    Mit VirtualDubMod hatte ich immer ein corruptes Audio nach dem Demuxen (mal zu kurz, mal am Ende nur noch Stille etc.) - egal was ich eingestellt habe. Also habe ich mich nochmal Nandub zugewendet und folgende Lösung erarbeitet:

    Source-Video mit 2 Audio-Streams (meist Deutsch und Englisch) in Nandub geladen:

    1. Audiospur 2 deaktiviert ("No Audio"), Audiospur 1 auf AVI-Audio gelassen, Video auf "Direct Stream Copy" gestellt und das Ganze abgespeichert.

    2. Audiospur 1 deaktiviert ("No Audio), Audiospur 2 auf AVI-Audio gelassen, Video auf "Direct Stream Copy" gestellt und das Ganze abgespeichert.

    3. Audiospuren 1 & 2 deaktiviert ("No Audio"), Videospur auf "Direct Stream Copy" gestellt und das Ganze abgespeichert.

    4. Mittels Avi2Wavcmd aus den beiden Videos mit Audio (einmal Audio 1 und einmal Audio 2) die Audiospuren extrahiert (sind Mp3s)

    5. Alle nicht mehr benötigten Dateien gelöscht - somit habe ich jetzt 1 x Videodatei ohne Ton, 1 x Audiospur 1 und 1 x Audiospur 2 - bereit um weiterverarbeitet zu werden. Der ganze Vorgang ist zwar etwas aufwändiger, aber so funktionierts 100 % mit jeder VBR-Mp3 Avi-Datei (Kein async o.ä.).

    Habe ein Script für diesen Vorgang erstellt, so dass ich das nicht immer manuell machen muss.

    Das Ganze ist Teil eines Batch-Vorgangs, der folgendermaßen aussieht:

    1. Avi demuxen (wie oben beschrieben)
    2. Audiospuren normalisieren (mittels Mp3Gain)
    3. Dateien wieder muxen (mit jetzt einheitlicher Lautstärke der Audiodateien) (ebenfalls via Nandub-Script realisiert)

    Die Batch ist fertig und funktioniert einwandfrei. Bei Interesse kann ich gerne das komplette "Programm" hochladen.

    Eine Frage zum Schluss habe ich noch:

    Habe sonst immer die Audiospurem mit Avi-Mux GUI entsprechend der Sprache benannt (also Deutsch und Englisch z.B.). Dies wollte ich eigentlich auch implementieren, aber bei Verwendung eines Scripts kommt es immer zu dem o.g. Fehler mit dem Festplattenspeicherplatz. Daher meine Frage: Gibt es in Nandub auch eine Möglichkeit die Audiospuren zu benennen, so dass wenn ich die fertige Datei z.B. mit dem VLC Media Player abpiele unter "Audiospur" nicht einfach "Track 1" und "Track 2" steht, sondern eben "Deutsch" und "Englisch"?

    Greez WiZzardZz


    In VirtualDubMod kann man in den Optionen einstellen, dass VBR-Streams "wie in Nandub" behandelt werden sollen.

    Diesen Haken habe ich gesetzt, das bringt aber leider nix, da dies sich ja nur auf Encoding Vorgänge auswirkt, es geht ja aber um den "Direct Stream Copy" - Modus.

    AviMux-GUI hat anscheinend auch eine Skript-Steuerung, habe ich hier gerade gestern gelesen. Die müssen wir aber auch erst mal erforschen...

    Ja, das hast Du von mir gelesen :). Habe damit auch schon rum experimentiert, nur leider fehlt ein Befehl fürs demuxen (in der GUI kann man ja "extract binary" auswählen, dieser Befehl fehlt per Script, leider :(). Und ein Scipt zum Muxen habe ich auch schon erstellt, es funktioniert auch alles, nur leider habe ich hier immer eine sehr komische Fehkermeldung und zwar erscheint immer eine Dialogbox, die mich darauf aufmerksam macht, dass nicht genug Festplattenspeicherplatz vorhanden ist und der Vorgang nicht fortgesetzt werden sollte (obwohl über 10 GB Speicherplatz frei sind und die Datei nur 200 MB groß ist). Kanns Dir bei Interesse gern mal zukommen lassen.