AVS Loop script fehler

  • Hi, ich hab n kleines Problem mit nem avs-script was ich mir gebastelt hab und da komme ich einfach nicht mehr weiter.
    Ich möchte bei einem Video, an mehreren Stellen, Bild und Ton für eine beliebigen Zeitraum anhalten. Der Ton soll während dieser Pausen stumm bleiben.
    Im Script sieht das bei mir so aus:

    Bei der ersten Pause (frame 587) funktioniert das wunderbar, bei der 2ten Pause (frame 1486) nicht mehr. Das Video bleibt zwar stehen wie gewünscht, der Ton jedoch nicht.
    Zum Test habe ich mal von mehr als einem frame den sound entfernt und so rausgefunden, dass der sound bei frame 1918 anstatt bei 1486 verstummt.

    Jetzt kam mir die Zahl komisch vor und siehe da: frame 1486 + 72 + 360 (die frames die das video durch die loops zusätzlich erhält) = 1918.
    Weiter bin ich allerdings nicht mehr gekommen. Kann mir das weder erklären noch hab ich ne Idee zur Lösung. Weiß jemand Rat?

    Einmal editiert, zuletzt von babbsagg (1. Juli 2009 um 09:24)

  • Nach dem 1. Loop ist Dein zweiter "Zielframe" #1486 ja gar nicht mehr #1486, sondern #1486+72. Also wird der 2. Loop eine Stelle vor dem 2. Zielframe wiederholen, weil der ja bereits "nach hinten gewandert" ist (wg. dem 1. Loop)

    Korrigiert:

    Code
    Loop(72,587,587) # 1 Pause für 3 SekundenLoop(360,1486+72,1486+72) # 2 Pause für 15 Sekunden

    Besserer, und einfacher nachzuvollziehender Stil ist es, solche Manipulationen "von hinten nach vorne" aufzuziehen. (Wenn man hinten etwas wegschneidet oder hinzufügt, ändert das nichts an den Positionen der vorderen Frames) :

    Code
    Loop(360,1486,1486) # 2 Pause für 15 Sekunden
    Loop(72,587,587) # 1 Pause für 3 Sekunden

    Mit dieser von-hinten-nach-vorne - Methode behält man auch bei seeehr vielen Trim's/Loop's/etc. den Überblick.

  • OK, vielen vielen Dank für die Hilfe. Deine Methode machts erheblich einfacher :D

    Edit: Ich wolltes mal ausprobieren aber ganz geklappt hats leider nicht.

    Code
    Video=DirectShowSource("omgwtfbbq",fps=23.976,convertfps=true)Videotonlos=Video.killaudio()Audiotonlos=Tone(600.0,440,48000,2,"silence")Audio=Audiodub(Videotonlos,Audiotonlos)Teil1=Video.trim(0,586)Teil2=Audio.trim(587,587)Teil3=Video.trim(588,1485)Teil4=Audio.trim(1486,1486)Teil5=Video.trim(1487,1917)last Teil1 + Teil2 + Teil3 + Teil4 + Teil5Loop(360,1486,1486)Loop(72,587,587)

    Erste Pause ging wieder einwandfrei aber die 2te Pause fällt jetzt auf frame 1540 (1486+72). Es klappt aber wenn ich folgendes tue:

    Ich versteh zwar nicht ganz warum aber so funkionierts. Bloß wird das enorm aufwenig wenn ich da 200 Pausen drin habe und jeweils die ganzen zusätzlichen frames addieren und vorher abziehen muss.

    9 Mal editiert, zuletzt von babbsagg (1. Juli 2009 um 17:45)

  • Mal folgende Idee dazu: die Loops direkt in die Zeile für die einzelne Teile schreiben. Sähe dann so aus:

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • ... nimm' doch mal bitte einer das dämliche "last" aus dem Script raus. Das hat an der Stelle nämlich üüü-ber-haupt-gar-nichts zu suchen ...

  • Mal folgende Idee dazu: die Loops direkt in die Zeile für die einzelne Teile schreiben. Sähe dann so aus:

    Dann startet Pause 2 leider wieder bei 1558 (1486+72) und Pause 3 dann wohl bei x + 72 + 360.

    ... nimm' doch mal bitte einer das dämliche "last" aus dem Script raus. Das hat an der Stelle nämlich üüü-ber-haupt-gar-nichts zu suchen ...

    Hab wenig Ahnung von der avs Syntax, hatte mirn Teil davon abgeschaut und dachte das sei obligatorisch :D.

    2 Mal editiert, zuletzt von babbsagg (1. Juli 2009 um 19:06)

  • Ja, das ist ja auch richtig, da der erste Teil 586 Frames hat, der zweite hat 72, der dritte hat 898 Frames, macht zusammen die 1558. Wenn die Pause früher kommen soll, müsste ja davor irgendwo was rausgeschnitten werden.

    Oder habe ich das falsch verstanden?

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Ja, das ist ja auch richtig, da der erste Teil 586 Frames hat, der zweite hat 72, der dritte hat 898 Frames, macht zusammen die 1558. Wenn die Pause früher kommen soll, müsste ja davor irgendwo was rausgeschnitten werden.

    Oder habe ich das falsch verstanden?

    Also sicher ist das ein Weg, allerding ist der etwas problematisch wenn ich das Video editiere. Ich weiß ja selbst noch nicht an welchen Stellen ich überall Pausen setzen möchte. Wenn ich ne Stelle finde, muss ich dann das frame ablesen und alle bisher hinzugefügten frames abziehen. Bei geschätzten 150 Pausen ist das dann wohl wesentlich aufwändiger, als die Tonspur mitm Audioeditor zu bearbeiten und die Stellen wo sich der Ton wiederholt einfach zu muten.

  • Irgendwo muss hier ein Missverständnis vorliegen. Ich dachte, Du suchst eine Lösung, die Loops an die richtige Stelle zu bekommen.

    Doch darum scheint es ja inzwischen nicht mehr zu gehen. Oder funktioniert etwas an meiner Lösung nicht so, wie es soll.

    Es ist ja klar, das die Gesamtlänge des Videos um die hinzugefügten Pausen wachsen muss.

    Edit:
    Muss erst mal weg, schau später nochmal kurz rein.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

    Einmal editiert, zuletzt von mawi2006 (1. Juli 2009 um 20:17)

  • Das Problem ist, dass Video und Sound nicht praktisch vereinbar sind.
    Ich kann ja mit sonem script zB. die Pausen ganz einfach setzen.

    Eigentlich schon perfekt, bloß hab ich dann während den Pausen immer den sound der sourceframe, der sich ständig wiederholt. Jetzt könnte ich ja mit nem Audioeditor hingehen und die Stellen muten.
    Den Aufwand würd ich mir gerne spaaren und deswegen suche ich nen Weg die Pausen, per Script, automatisch stumm zu bekommen.

  • Ähm, ja ... dazu müsstest du das wohl auf einen Einzelclip anwenden, der nur das eine geloopte Bild enthält. Und da würde dir 1 Videoframe lang Audio verlorengehen.

  • Meinst du So?

    Weil das führt leider auch wieder dazu, dass Pause 2 um 72 frames nach hinten verschoben wird und man das wie im script angleichen müsste.
    Da ginge dann auch wieder das große Rechnen los :D.

  • Mal eine Frage dazu, wie ermittelst Du denn die Stellen, wo eine Pause gebraucht wird?

    Die Frage zielt dahin, ich öffne *.avs ja in VirtualDub. Dort suche ich die erste Stelle für eine Pause. VDub zeigt mir ja die Framenummer an. Die übernehme ich ins Script, welches ich mit Notepad geöffnet habe. Dort mal schnell Strg+S gedrückt, danach zu VDub wechseln und F2 drücken. Jetzt ist die Pause schon eingebaut und mir wird an der zweiten Stelle die richtige Framenummer angezeigt.

    Script dazu würde bei mir so aussehen:


    Edit: Du lädst eine mp4-Datei mit directshowsource:nein:
    Da gibt es aber Qualitativ bessere Möglichkeiten.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

    4 Mal editiert, zuletzt von mawi2006 (1. Juli 2009 um 22:33)

  • Ich hab bisher mit AvsP und der Preview externen im kmplayer gearbeitet aber wenn die Pausen in Vdub mit eingebaut werden, dürfte sich das gleichen.

    Ich könnte natürlich auch am uneditieren Video die Stellen raussuchen aber das wäre bisschen unpraktisch.

    Einmal editiert, zuletzt von babbsagg (1. Juli 2009 um 22:51)

  • Na dann versuch doch mal, ob das beschriebene Handling was für Dich ist.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

  • Bei deinem Script bekomme ich leider nen Script Error:
    Invalid arguments to function "loop_mod"


    Edit: Du lädst eine mp4-Datei mit directshowsource:nein:
    Da gibt es aber Qualitativ bessere Möglichkeiten.

    Und die wären? Du merkst, ich bin ein ziemlicher Kacknoob was encoding angeht :ani_lol:

  • Jo, sorry, da fehlt bei der Funktion die letzte Klammer, editiere ich gleich oben.

    Mp4 öffnen, schau mal hier nach: http://forum.gleitz.info/showthread.php?t=40034

    Edit: NE, fehlt nix im Script. Hast Du den Teil mit der Funktion in dein Skript kopiert?

    Zeig doch mal dein Script bitte.

    mawi2006

    Intel Q9550@2500 MHz / Motherboard Name Asus P5N-VM WS / Grafikkarte NVIDIA Quattro FX470 / 4x2 GB 800 MHz / DVD-RAM DVR-216DBK / LiteOn IHas 322 / HDD: 500 GB HD502HJ / SSD: Solidata K5 64GB

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!