• Hallo,

    ich bin durch zufall, per Google auf eure Webseite gekommen und habe schon einige interessante Threads gelesen nur wurde jetzt noch nicht alle meine fragen beantwortet, die ich natürlich wenn es geht auch noch beantwortet haben möchte :kuss:

    Ich habe zwar erst vor kurzen mit dem Encoding angefangen und habe bereits einiges im Internet darüber gelesen, aber ich habe große Probleme mit dem MP4 Container und TS Dateien oder besser gesagt, ich komme mit denen nicht zurecht.

    1. Mit was Öffnet man am besten MP4 oder TS Dateien in einem AVS Script?
    Es gibt ja einige Varianten, soweit ich gelesen habe von FFVideoSource bis zu DirectShowSource.

    Ich habe auf einer Webseite mal gelesen, das bei Windows 7 ja etwas, am Internen Media Server von Windows geändert wurde und dadurch, es zu Problemen besonders mit MP4 Dateien kommen kann.

    2. Nun meine Frage hierzu, ich wollte ein Video mit MeGUI Encoden, nun bin ich aber auf ein Problem gestoßen. Und zwar, das Video sollte eigentlich 23:59 Minuten gehen. Wenn ich das AVS Script in MeGUI lade:

    Zitat

    FFVideoSource("video 01.mp4").ConvertToYV12
    Crop(2, 2, -2, -0)
    Spline36Resize(848,480) # Spline36 (Neutral)


    Dann wollte ich die Bitrate im Bitrate Caculater einstellen und sah dort, das mir 25:46 Minuten angezeigt werden, ich hatte mir da nichts weiteres gedacht und erstellte eine Normale Xvid ca. 150MB mit der Sound Datei, musste aber feststellen, das dass plötzlich wirklich 25:46 Minuten lang war, an was könnte dies liegen, Windows 7?

    Und nun zu meiner letzten Frage:

    3: Und zwar wollte ich gerne wissen, mit was man am besten TransportStream Dateien Schneidet, hier gibt es ja auch mehrere möglichkeiten, von irgendwelchen Programmen oder per AVS script, mit dem Trim befehlen, letzters nur, wenn ich das jetzt Richtig verstanden habe. Und was man tut, wenn man bei der Audio Datei, einen Delay hat?

    Ich hoffe, ihr könnt mir diese Fragen beantworten :ichdoof:

    :daumen:
    Melissa Aiko

  • :welcome:

    1) Was unter Windows 7 geändert werden musste, betrifft lediglich DirectShow-Mediaplayer. Wenn du FFVideoSource für AviSynth verwendest, dann ist ziemlich egal, was an DirectShow-Filtern im System installiert ist.

    2) Das Problem hier ist wohl die "variable Bildwiederholungsrate". So etwas kann AviSynth eigentlich überhaupt nicht (weshalb schon ziemlich überraschend ist, dass x264 das encodiert hat, da es doch auch meist von AviSynth gefüttert wird). Stattdessen rechnet AviSynth eher den gesamten Film mit einer konstanten, durchschnittlichen Rate, die aber eventuell nicht exakt ist. Hier kann ich im Moment keine "beste Lösung" anbieten; es wäre allerdings wohl interessant zu erfahren, aus welcher Art Quelle ein solches Video stammt, denn "variable Framerate" sendet wohl kein Fernsehsender, und speichert auch keine im Handel erhältliche Disk. Das kommt vielleicht vor, wenn jemand PC-Spiele aufzeichnet, oder das Video für Internet-Streaming optimiert wurde.

    3) Kommt drauf an, was drin steckt. AviSynth kann überall an jedem beliebigen Frame schneiden, muss aber vorher alles decodieren. Andere Tools können auch schneiden, ohne groß zu decodieren, aber dann nur in größeren Abständen. Verschiebungen zwischen Bild und Ton sind eine etwas kompliziertere Angelegenheit, je nach dem, ob der Ton zwischendurch möglichst nicht neu encodiert werden soll; wenn das nicht stört, dann kann man ihn in AviSynth verschieben (DelayAudio).

  • Erst mal Danke LigH für deine beantwortung für meine Fragen.

    :welcome:

    1) Was unter Windows 7 geändert werden musste, betrifft lediglich DirectShow-Mediaplayer. Wenn du FFVideoSource für AviSynth verwendest, dann ist ziemlich egal, was an DirectShow-Filtern im System installiert ist.

    Ah ok, dann brauch ich mich ja nicht wundern, wenn in einem AVS Script DirectShowSource nehme und dies dann in MeGUI reinlade und dadurch das Programm abstürzt, oder hab ich da jetzt was falsch verstanden?

    2) Das Problem hier ist wohl die "variable Bildwiederholungsrate". So etwas kann AviSynth eigentlich überhaupt nicht (weshalb schon ziemlich überraschend ist, dass x264 das encodiert hat, da es doch auch meist von AviSynth gefüttert wird). Stattdessen rechnet AviSynth eher den gesamten Film mit einer konstanten, durchschnittlichen Rate, die aber eventuell nicht exakt ist. Hier kann ich im Moment keine "beste Lösung" anbieten; es wäre allerdings wohl interessant zu erfahren, aus welcher Art Quelle ein solches Video stammt, denn "variable Framerate" sendet wohl kein Fernsehsender, und speichert auch keine im Handel erhältliche Disk. Das kommt vielleicht vor, wenn jemand PC-Spiele aufzeichnet, oder das Video für Internet-Streaming optimiert wurde.

    Sollte ich dann probieren, das Video im AVS script, Bsp. per FPSchange auf eine Konstante Framerate zu bringen?

    Ich denke mal, die hatten das viel leicht aus dieser TransportStream Datei gemacht:


    3) Kommt drauf an, was drin steckt. AviSynth kann überall an jedem beliebigen Frame schneiden, muss aber vorher alles decodieren. Andere Tools können auch schneiden, ohne groß zu decodieren, aber dann nur in größeren Abständen. Verschiebungen zwischen Bild und Ton sind eine etwas kompliziertere Angelegenheit, je nach dem, ob der Ton zwischendurch möglichst nicht neu encodiert werden soll; wenn das nicht stört, dann kann man ihn in AviSynth verschieben (DelayAudio).

    Also kann ich jetzt nicht direkt mit dem TransportStream Arbeiten und sollte das besser in ein anderes Format/Container Encoden?
    Wie verhält sich eigentlich das mit dem Audio Encoding, per AVS Script?
    Soweit ich jetzt die standart sachen weiß, kann man im AVS Script eingeben, wenn man per DOS Fenster unter Windows encodet:
    Video=XXX
    Video=XXX
    AudioDub(Video,Audio)
    Wie verhält sich das beinem Audio das einen Delay zu dem Video hat, ist es eher sinniger vorher mit MeGUI, das Audio zu bearbeiten?

  • Zu 2.:

    Es gibt zwei Möglichkeiten Videos mit variabler Framerate mit AviSynth zu verarbeiten:

    a) Umwandeln in konstante Framerate

    z.B.:
    FFVideoSource("video.mp4",fpsnum=24000,fpsden=1001)

    b) Erstellen von Timecodes, mit denen dann der Encoder bzw. Muxer gefütter wird

    z.B.:
    FFVideoSource("video.mp4",timecodes="timecodes.txt")
    danach z.B. mit x264 Encoden:
    x264 --tcfile-in timecodes.txt -o neues_video.mkv eingangsvideo.avs

  • Der "Transport-Stream" ist nur die Hülle, die Audio und Video in einer Einheit zusammenhält. Nicht der Transport-Stream ist die Ursache, dass man den Video-Inhalt nur an bestimmten Stellen schneiden kann, sondern die Struktur der darin enthaltenen Videospur. Nur sehr wenige Frames (I-Frames) sind in modernen, effizienten Videoformaten "unabhängig" -- alle anderen Frames (P- und B-Frames) enthalten überwiegend Vergleiche zu anderen Frames, und wenn die weggeschnitten werden, dann gibt es plötzlich nichts mehr, womit sie sich vergleichen könnten.

    Wenn dein Schnitt also zufällig an einem I-Frame passt, ist es kein Problem. Willst du aber irgendwo anders schneiden, dann müsste wenigstens an der Schnittstelle ein neues I-Frame entstehen. Bei MPEG2-Video geht das noch relativ problemlos. Aber MPEG4-AVC-Video ist dermaßen komplex, dass dies bisher noch kaum ein Programm schafft, denn dabei müssten auch jede Menge weitere Nebenbedingungen beachtet werden. Dadurch kann es manchmal notwendig werden, Audio und Video komplett in AviSynth zu laden und zu decodieren, dort dann den Delay auszugleichen, zu schneiden, und danach Video und Audio wieder neu zu encodieren.

    FFVideoSource lädt nur den Video-Teil aus einer Filmdatei. Für Audio gibt es entsprechend FFAudioSource. Nach 'Import("{Pfad}\FFMS2.avsi")' steht aber auch eine Funktion "FFmpegSource()" bereit, die Audio und Video gleich gemeinsam in einen Clip lädt, damit sparst du dir, selber "AudioDub(v, a)" nachträglich anwenden zu müssen, oder gar testen zu müssen, ob denn da überhaupt Audio drin ist. Bei mehreren Video- oder Audio-Spuren in der selben Datei musst du nur die Nummer der gewünschten Spur herausfinden; bei nur je einer kannst du sie weglassen, dann nimmt die Funktion jeweils die erste , die er findet.

  • Vielen Dank, das hatte mir die Lösung gebracht.


    FFVideoSource lädt nur den Video-Teil aus einer Filmdatei. Für Audio gibt es entsprechend FFAudioSource. Nach 'Import("{Pfad}\FFMS2.avsi")' steht aber auch eine Funktion "FFmpegSource()" bereit, die Audio und Video gleich gemeinsam in einen Clip lädt, damit sparst du dir, selber "AudioDub(v, a)" nachträglich anwenden zu müssen, oder gar testen zu müssen, ob denn da überhaupt Audio drin ist. Bei mehreren Video- oder Audio-Spuren in der selben Datei musst du nur die Nummer der gewünschten Spur herausfinden; bei nur je einer kannst du sie weglassen, dann nimmt die Funktion jeweils die erste , die er findet.

    Ah OK, das werde ich mal berücksichtigen.

Jetzt mitmachen!

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