MeGUI gibt nur leere Audio-Files aus

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

  • MeGUI gibt nur leere Audio-Files aus

    Anzeige
    Hi,

    ein Kumpel von mir und ich machen Let's Plays. Ich bin für das Schneiden und Encoden der Videos zuständig und möchte auf MeGui umsteigen. Allerdings liefert mir MeGUI immer leere Audio Dateien Wenn ich versuche meine AVS-Files zu encoden. (Bzw. produziert einen Fehler bei MP3 encoding)

    Ein Beispiel für ein AVS-File:

    Quellcode

    1. __film = DirectShowSource("C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.mp4", fps=60.000, audio=true, convertfps=true).AssumeFPS(60,1).ConvertToYV12()
    2. fade = FadeOut(BlankClip(__film.trim(541, 660),length=120, color=$FFFFFF), 120,0,60)
    3. __t0 = Overlay(__film.trim(444,504),ImageSource("..\thumbnail.png", start=0, end=60, fps=60))
    4. __t1 = Overlay(__film.trim(505,624),ImageSource("..\thumbnail.png", start=0, end=119, fps=60),mask=fade)
    5. __t2 = __film.trim(625,0)
    6. __t0 ++ __t1 ++ __t2


    In der Log-Datei habe ich folgende Fehlermeldung gefunden:

    Quellcode

    1. --[Information] [18.06.2014 13:23:39] Trying to open the file with Import()
    2. --[Information] [18.06.2014 13:23:51] Successfully opened the file with Import()
    3. --[Warning] [18.06.2014 13:24:16] channel count mismatch! The input file is reporting 0 channels and the AviSynth script is reporting 6 channels
    4. --[Error] [18.06.2014 13:24:16] no audio detected: C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.avs


    Allerdings hat meine Eingangsdatei eindeutig eine Tonspur. Kann mir jemand mit diesem Problem helfen?

    Wenn ich versucht habe die Tonspur per VLC oder Audacity zu demuxen und nach dem encoding wieder zu muxen bekomme ich immer einen hässlichen Versatz von Ton und Bild.

    Danke schon Mal im Voraus.
  • Ok, ich habe jetzt einfach nur die Original Datei per AVS-SkriptMaker eingebunden.

    Code:

    Quellcode

    1. DirectShowSource("C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.mp4", fps=60.000, audio=true, convertfps=true).AssumeFPS(60,1)
    2. #deinterlace
    3. #crop
    4. #resize
    5. #denoise


    Was mir tatsächlich eine Sound Datei liefert, allerdings eine die viel zu schnell abgespielt ist (ca. 1/3 der Originaldauer). Die Aufnahme gemacht habe ich mit ShadowPlay und einer Framerate von 60FPS. (Ich weiß ist überflüssig und werde ich demnächst auf 30FPS runterschrauben)

    Allerdings ist das nicht so toll wenn das mit dem Trim nicht funktioniert, muss ich da dann jedesmal händisch mit Audacity die Tonspur extra schneiden?

    Übrigens: Wow, die Antwort kam echt schnell.
  • Nein, es hängt mit dem Overlay zusammen.

    Außerdem würde ich bei MP4 FFMS2 verwenden, da DirectShow nicht grad der Burner ist.

    Auch dein Skript an sich ist nicht gerad von Erfolg gekrönt.

    Quellcode

    1. LoadPlugin("D:\MeGUI\Tools\FFMS\FFMS2.dll")
    2. file = "C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.mp4"
    3. FFIndex(file)
    4. video = Audiodub(FFVideoSource(file, threads=1), FFAudioSource(file)).ChangeFPS(30, 1)
    5. Bild = ImageReader("..\thumbnail.png", 0, 0, 30, True, pixel_type="RGB32")
    6. Blende(video, Bild, Bild.ShowAlpha(pixel_type="RGB32"), 444, 624, 0, 60, video.width - Bild.width - 50, video.height - Bild.height - 50, 1.0)
    7. AudioDub(video).ConvertToYV12()
    8. #Ab hier kannste schneiden wie gewohnt oder lässt es weg und machst es via MeGUIs AVS Cutter:
    9. __film = last
    10. __t0 = __film.Trim(505, 625)
    11. __t1 = __film.Trim(626, __film.framecount) # Diese Zeile zeigt alles von Frame 626 bis zum Frameende des filmes an
    12. __t0 ++ __t1
    13. Function Blende (clip clip0, clip clip1, clip clip1mask, int sframe, int eframe, int fadeinframe, int fadeoutframe, int x, int y, float opa) {
    14. clip0 = ApplyRange(clip0, sframe, eframe-fadeoutframe-1, "Animate", sframe, sframe+fadeinframe, "Overlay", clip1, x, y, clip1mask, 0.0, clip1, x, y, clip1mask, opa)
    15. return ApplyRange(clip0, eframe-fadeoutframe, eframe, "Animate", eframe-fadeoutframe, eframe, "Overlay", clip1, x, y, clip1mask, opa, clip1, x, y, clip1mask, 0.0)
    16. }
    Alles anzeigen


    Framepunkte dürften nicht übereinstimmen und müssten selbst noch mal angeordnet werden.
    Das wäre das gleiche, nur halt dynamischer und Ordentlicher ;D

    Zudem sind 60 FPS überflüssig. Lass es gleich am Anfang in 30 FPS ändern so wie in meinen Skript hier. Denn dadurch wird der Encode etwas beschleunigt, da er nur noch die Hälfte der Bilder verarbeiten muss. Und YT macht sowieso max. nur 30 FPS. Also kannste es auch gleich richtig machen ;D


    Zudem darf die Mediainfo dir bei den ShadowPlay Aufnahmen keine VFR anzeigen beim Video, denn AVISynth ist ein CFR Programm und kein VFR.
    Du musst bei ShadowPlay (Sofern das dort überhaupt möglich ist) in CFR aufnehmen lassen. Ansonsten wird das Video immer Asynchron sein.
    Zudem auch in 30 FPS aufnehmen, sofern möglich. Du machst dir die Datein unnötig groß.

    Sollte es sich um eine VFR Aufnahme handeln (Erkenntlich das in der Mediainfo mehrere Bildwiederholraten stehen die ein Minimum und ein Maximum haben), dann hat eine 60 FPS VFR eigentlich eine Wertung von 120 FPS CFR. Und das ist nun mal eindeutig zuviel.

    VFR in CFR wandeln kann man auch. Aber dieses Unterfangen wird eigentlich nur von Usern verwendet dann die ihre Aufnahme via Capture Box oder Grabbers gestalten.
    Mit VFR wirst du nämlich an sich nix anfangen können, sondern muss erst mit einer Software in CFR konvertiert werden.
    Sowas ist bei PC Aufnahmen unnötig und Zeitaufwendig, da es bereits Software gibt die in CFR aufnehmen können.

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

  • Anzeige
    Wow, danke für das Skript.

    Der Ton kommt wie gewünscht raus^^

    Da ich mich erst seit ein paar Tagen mit AviSynth beschäftige wäre ich auf sowas nie gekommen xD Ich denke ich habe jetzt auch gut verstanden was du da machst. Allerdings hat es bei mir noch einen kleinen Fehler produziert. In Zeile 15 ist im Animate Befehl sframe=sframe+fadeinframe und das liefert einen Fehler.

    Die Verschiebung des Bilds werde ich auch wieder rückgängig machen, aber danke dass dus reingeschrieben hast^^ Jetzt weis ich wo ichs einfügen muss.

    Verdammt... ich hab grad nachgelesen was CFR, VFR bedeutet... najoah xD ich wollte sowieso auf ein andres Aufnahmeprogramm umsteigen

    Danke noch mal für das Skript.
  • Sephron schrieb:

    Allerdings hat es bei mir noch einen kleinen Fehler produziert. In Zeile 15 ist im Animate Befehl sframe=sframe+fadeinframe und das liefert einen Fehler.


    Ja, sry xD Ich hab das aus dem Kopf zusammengeschraubt und dabei vergessen das in Zeile 9 zwischen 624 und 60 die 0 zu eine 1 zu machen. Der Fadein darf keine 0 haben, sondern muss eine 1 haben. 1 bedeutet das er nix einfaden tut. Das hat was mit der Funktion unten zu tun. ^^ Ansonsten sollte es gehen.

    Eine Mediainfo zu deinem Quellvideo und ich sage dir ob es VFR oder CFR ist. Falls es VFR ist, sollteste entweder das ganze auf CFR umstellen und wenn das nicht geht die Aufnahmesoftware wechseln.

    Kostenlos wäre MSI Afterburner, Virtual Dub oder Open Broadcaster. Wobei letzteres wieder diese unschönen MP4 Formate mit h264 Material erzeugt. Nicht grad schön bei AVISynth. Performanter sind immernoch AVIs wie sie von Fraps, Afterburner, DXTory und VDub ausgegeben werden mit dem entsprechenden Lossless Codec.

    Bei AVI Verwendung sieht dein Skript entsprechend anders aus dann:

    Quellcode

    1. file = "C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.mp4"
    2. # AssumeFPS - Die FPS reinschreiben die das Quellvideo hat.
    3. # ChangeFPS - Nur nehmen, falls die FPS > 30 ist
    4. # NTSC Werte wie 29.970 FPS gibt man folgendermaßen ein: AssumeFPS(30000, 1001)
    5. # 23.976 FPS ergibt sich aus 24 / 1,001 also AssumeFPS(24000, 1001)
    6. video = AVISource(file).AssumeFPS(60, 1).ChangeFPS(30, 1)
    7. Bild = ImageReader("..\thumbnail.png", 0, 0, 30, True, pixel_type="RGB32")
    8. Blende(video, Bild, Bild.ShowAlpha(pixel_type="RGB32"), 444, 624, 1, 60, video.width - Bild.width - 50, video.height - Bild.height - 50, 1.0)
    9. AudioDub(video).ConvertToYV12()
    10. #Ab hier kannste schneiden wie gewohnt oder lässt es weg und machst es via MeGUIs AVS Cutter:
    11. __film = last
    12. __t0 = __film.Trim(505, 625)
    13. __t1 = __film.Trim(626, __film.framecount) # Diese Zeile zeigt alles von Frame 626 bis zum Frameende des filmes an
    14. __t0 ++ __t1
    15. Function Blende (clip clip0, clip clip1, clip clip1mask, int sframe, int eframe, int fadeinframe, int fadeoutframe, int x, int y, float opa) {
    16. clip0 = ApplyRange(clip0, sframe, eframe-fadeoutframe-1, "Animate", sframe, sframe+fadeinframe, "Overlay", clip1, x, y, clip1mask, 0.0, clip1, x, y, clip1mask, opa)
    17. return ApplyRange(clip0, eframe-fadeoutframe, eframe, "Animate", eframe-fadeoutframe, eframe, "Overlay", clip1, x, y, clip1mask, opa, clip1, x, y, clip1mask, 0.0)
    18. }
    Alles anzeigen

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

  • Sephron schrieb:

    Wie kann ich mir denn die Mediainfo von dem Video anzeigen lassen?


    MediaInfo kannst du dir kostenlos runterladen: mediaarea.net/de/MediaInfo

    Dann einfach Rechtsklick auf die Datei --> MediaInfo und dann das Ergebnis hier reinkopieren ;)

    EDIT: Falls MediaInfo nicht im Kontextmenü erscheint, kannst du es auch öffnen und die Quelldatei einfach reinziehen...
    #1 (Shinigami) -- Let's Play Bound By Flame #53 Irrwege und starke Gegner
    --
    (Dieses Video ist Teil einer Community-Aktion:
    Komm in meine Signatur)

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

  • Sephron schrieb:

    Mach es einen Unterschied ob ich 0 oder __film.framecount als endframe für meinen Trim verwende?

    Es dient andere und vor allem Anfänger als Übersicht wenn du es so machst wie ich dort auch.

    Ich meine, frag dich mal selbst ob es ein Sinn macht wenn man liest:
    Trim(625, 0) -> Also schneide von Frame 625 bis 0
    oder
    Trim(625, __film.framecount) -> Also schneide von Frame 625 bis zur max. Frameanzahl von __film

    Was ist logischer? ;D

    Zudem hat wenn man es so schreibt Trim(625, 0) eine ganz andere Bedeutung. Es werden hier die ersten 625 Frames gelöscht. Macht also keinen Sinn so.

    Zudem wirst du bei weiteren Arbeiten (sofern du es vorhaben solltest mit AVISynth) immer Ordnung halten und das ganze so gut es geht sortieren und logisch ausfüllen.
    Andere können dir dann so einfach besser helfen und finden dann auch Fehler schneller.

    Ich hab z.B. aus deinen Skript im Startpost erst mal überlegt was du damit machen wolltest ^^ Das ist alles so zusammengepresst gewesen xD

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

  • DarkHunterRPGx schrieb:

    Und wenn du testweise mal die videodatei nur so einliest, also OHNE dein fertiges skript oben?
    Ich hab das gefühl, es hängt mit den TRIM befehlen zusammen


    Avisynth gibt das aus:

    Quellcode

    1. --[Warning] [18.06.2014 13:24:16] channel count mismatch! The input file is reporting 0 channels and the AviSynth script is reporting 6 channels
    2. --[Error] [18.06.2014 13:24:16] no audio detected: C:\Users\Klaus\Videos\LPs\Jade Empire\Roh17\aufnahmeEp17.avs


    Ich frage mich, wo du da ein Zusammenhang mit Trim erkennst?
    _

    Es wird an DirectShowSource liegen. MeGUI wird dir via file indexer + ffms2 auch eine seperate avs für Audio erstellen und diese für audio benutzen. Aber die Situation ist wegen dem VFR eh nicht ganz einfach.

    Und das Shadowplay gar in VFR aufnimmt ist schon echt traurig xD

    Zu Afterburner hab ich hier Settings gepostet :)

    Was ist mit DXTory los? Performance für'n Arsch geworden
    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