Hintergrund Bild einfügen mit Avisynth und alles zurecht schieben

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

  • Hintergrund Bild einfügen mit Avisynth und alles zurecht schieben

    Anzeige
    Hallo alle miteinander,
    das Problem steht im Grunde schon oben aber ich möchte trotzdem noch mal kurz erläutern worin das Problem besteht.
    Also ich habe eine Video Aufnahme von 60 FPS (bricht aber während des Spiels gerne mal 45-40 FPS herunter). Leider hat mein Videobearbeitungs Programm nicht die Möglichkeit mein Video auf 16:9 zu stellen in der richtigen FPS Menge in Progressiver Ausführung sondern nur in Interlanced, was mir aber scheinbar nichts bringt.
    Das Problem ist, das ich schon bei den kleinsten Bewegungen, wie Sprachanimation unter 1080p schlieren (streifen ähnlich) habe, was alles andere als gut ist. Dennoch läuft das Video auf YT unter 720p relativ stabil ohne das mir irgend etwas geshreddert wird.
    Ich weiß, dass das Problem an Sony Movie Studio liegt. Es gibt aber auch eine Funktion in Sony Movie, die das Problem etwas umgehen kann und zwar wenn es einfach die Media Infos des Ursprungsvideos übernimmt. Leider habe ich dort wiederum das Problem, das mein Video meist nur ein 4:3 Bild ist, jedoch möchte ich ein 16:9 Bild haben + den Hintergrund, auf dass ich keine schwarzen Streifen rechts und Links habe.
    Um das Problem zu umgehen habe ich aktuell 2 Möglichkeiten.

    1. Sony Movie Studio hat eine funktion, mit der ich höhe und Breite gegebenenfalls anpassen kann, an das Video und kann alles wie gewohnt einrichten ODER

    2. Ich muss via Avisynth und den SSM das Video so umstellen, das es meinen Vorstellungen entspricht.

    Das Problem an 2. ist, dass ich zwar das Hintergrund Bild einfühgen kann, vorgefertigt wo und wie es auch stehen soll, ABER das eigentliche Video ist mittig und müsste zu dem Hintergrund Bild nach ganz links rutschen, aber ich weiß nicht wie das funktioniert ._.
    Könnt ihr mir da helfen?

    Ach ja und noch eine klitzekleine Kleinigkeit am Rande. Manche meiner Videos werden so ungünstig aufgenommen, das ich schwarze Balken am oberen und unteren Bildschirm habe + ein Teil der FPS zu sehen ist in diesem schwarzen Balkenbereich. Des weiteren habe ich dann natürlich das Problem, wenn ich bei Sony Movie das Bild vergrößere, so dass die schwarzen Balken verschwinden, dass das Bild zu groß ist links bzw. rechts ein Teil vom Bild fehlt, was mich natürlich auch sehr stören würde :/
    Habt ihr dafür vielleicht auch eine Lösung?
    Mir währe es ja am liebsten, wenn ich die Probleme als über Sony Movie angehen könnte, aber wenn dies letzten Endes nicht der Fall ist, muss ich es wohl so hinnehmen.


    Aber trotzdem schon mal Danke an alle die mir hier helfen wollen bzw. können :)


    PS: Gegebenenfalls würde ich auch als Beispiel Videos bzw. Bilder anhängen, um mein/e Problem/e zu veranschaulichen.
  • Ausgehend von deinem Videomaterial musst du wissen:
    Ist dein Video Interlaced? (Streifen im Video)
    Ist es wirklich 60FPS oder nur 59.94FPS? (Ghostingeffekte bei falscher FPS Konvertierung)
    Ist es VFR oder CFR? (Asynchronitäten könnten bei VFR auftreten)
    Ist die Auflösung anamorph oder nicht? (Anamorph würde heißen das die Auflösung nicht zum eigentlichen Seitenverhältnis passt und durch Zerrung der Pixel erst die Gewünschte Auflösung eintritt.)

    Nach diesen Kreterien kann man das ganze dann auch entsprechend auf effektive Art behandeln.

    Interlaced Videos müssen Deinterlaced werden. Dafür gibt es jede Menge Filter die das tun würden.
    FPS Änderungen so gestalten das Frames auch wirklich rausgeschmissen bzw. kopiert werden um somit Ghostingeffekte zu verhindern.
    VFR Videos müssen extra behandelt werden. Diese können in einem CFR Programm oder besser gesagt mit einer CFR Laderoutine/Filter nicht korrekt dargestellt werden. Folge wäre dann halt Asynchronität. Hier ist der Schlüssel eine VFR Laderoutine/Filter zu verwenden wie FFMS2 z.B.
    Anamorphe Auflösungen müssen Zwangsläufig gestreckt werden, auch wenn die Original Auflösung der Aufnahme anders ist. Das ist aber nur ein Spezialfall. Dafür gibt es dann auch mathematische Rechnungen die sowas automatisch ermitteln.

    Hast du alles kommt der zweite Schritt.
    Korrekte Seitenverhältnis.

    Das Seitenverhältnis ist das A und O. Keiner will Figuren sehen die auf einmal an Fettleidigkeit oder Magersucht leiden ^^ Das Motto also: So genau wie möglich der Originalauflösung treu bleiben. Von mir aus auch mit einen Hintergundbild ausfüllen wenn man UNBEDINGT den Zwang hat alles auf 16:9 fahren zu müssen. (Was leider sehr Engstirnig wäre.)
    Hat das eigentliche Video schon 16:9 und man möchte ein Hintergrundbild noch einfügen, so muss die Spielauflösung verkleinert werden, so das sie auf dem Hintergrund sitzt.
    Ist das Spiel allerdings nur ein 4:3 oder sonstige Abweichung von 16:9 (Ich geh hier mit 16:9 immer vom eingebetteten YT Player aus.), dann kann man auch den Rest der zu 16:9 noch fehlt mit einen Hintergrund ausfüllen.

    Hat das Video aus der Quelle noch einen eigenen Rahmen, weil es zur Justirung bei der Konsole gedacht war, oder man im Fenstermodus aufgenommen hat, so Cropt man diesen Bereich einfach weg.

    Ich gebe hier mal ein Beispiel wie alles in allem dann auszusehen hätte, wenn man alles beachten würde:
    Spoiler anzeigen

    Quellcode

    1. LoadPlugin("D:\VB-Projekte\Batch VB\VB6\Plugins\FFMS2.dll")
    2. LoadPlugin("D:\VB-Projekte\Batch VB\VB6\Plugins\TDeint.dll")
    3. #Videodatei kommt in eine Variable, um sie später mehrmals zu nutzen ohne den Pfad erneut anzugeben
    4. file = "testaufnahme.MP4"
    5. #VFR Video wird geladen und gleich in CFR umgewandelt (25 FPS)
    6. FFIndex(file)
    7. video = FFVideoSource(file, threads = 1, fpsnum = 25, fpsden = 1)
    8. #Videospur wird mit Audiospur der Aufnahme gedubt.
    9. audio = FFAudioSource(file)
    10. AudioDub(video, audio)
    11. #Deinterlacen nach TFF (Top Field First - Oberes Feld zuerst)
    12. #Hiermit werden Halbbilder in Ganzbilder konvertiert. Interlaced to Progrssiv.
    13. TDeint(Order = 1)
    14. #Als nächstes die Randbeschneidung mit Crop.
    15. Crop(32,40,-18,-26)
    16. #Da es anamorph ist muss das Video noch in die ursprüngliche
    17. #16:9 Einstellung (wie es im Spiel eingestellt war) gestreckt werden
    18. #Zeitgleich können wir hier auch die Endauflösung des Spieles bestimmen.
    19. #Außerdem lass ich es hier in die Variable Spiel stecken, damit es später auf einen Hintergrundbild aufgesetzt werden kann.
    20. #990 / 9 = 110
    21. #110 * 16 = 1760
    22. #Neue 16:9 Auflösung = 1760x990
    23. Spiel = Spline16Resize(1760, 990)
    24. #Soll das Spiel auf einen 16:9 Hintergrund zentriert werden, so muss dies
    25. #entweder größer sein als die momentane Spielauflösung oder die Spielauflösung muss
    26. #runtergedrosset werden.
    27. #Als Beispiel nutze ich jetzt mal einen 16:10 Hintergrund und die besondere
    28. #Eigenschaft das Video selbst auf dem Hintergrund zu zentrieren
    29. #Hintergrundbild laden mit Bild, Framelänge (Frame 1 bis max Videoframeanzahl), bei 25 FPS und mit angeschalteter DevIL Bibliothek.
    30. #Damit ist der Hintergrund ein Videoclip in der Variable Background.
    31. #Das Bild hat eine Originalauflösung von 1920x1200 und ist somit ein 16:10 Bild
    32. Background = ImageReader("final-fantasy_00333496.jpg", 1, video.framecount, 25, true)
    33. #Das zusammenführen macht man dann via Overlay am besten.
    34. Background.Overlay(Spiel, (Background.width - Spiel.width) / 2, (Background.height - Spiel.height) / 2)
    Alles anzeigen


    Hier auch mal ein Vorher/Nachher Bild:
    Vorher:


    Nachher:
  • Video Progressiv
    Fps stimmt...
    CFR
    Auflösung = anamorph

    Sie hat eine 4:3 Aufnahme und möchte eine 16:9 Auflösung verwenden, indem sie ein Hintergrundbild einfügt...
    Soweit so gut, das Problem ist nur das bei denn Standardeinstellungen des SSM das Video dann in der Mitte ist, also rechts und links die Balken sind...
    Sich möchte die Balken aber nur auf einer Seite haben...
    Also Video ganz links und das Hintergrundbild ganz rechts...

    Wenn es möglich wäre könntest du im SSM noch die Positionierung des Video mit einbauen
  • Kommt auf die Art des was für den Hintergrund genutzt werden soll drauf an.
    Soll Video und Bild zusammen 16:9 ergeben?
    ODER
    Soll Bild schon 16:9 sein und Video drauf gelegt werden?

    Ersteres nutzt man für Gewöhnlich wenn man das Video als Vollbild haben will, aber an der Seite ein paar Infos haben möchte.

    Zweiteres nutzt man um einen Video auf ein Hintergrund zu legen, wo man auch die Chance hat das Video frei Zoombar zu lassen.

    Und nein, das werde ich im SSM nicht einbauen, weil sowas einfach zu Speziell ist.

    GelberDrache92 schrieb:

    Auflösung = anamorph

    Sie hat eine 4:3 Aufnahme und möchte eine 16:9 Auflösung verwenden, indem sie ein Hintergrundbild einfügt...

    Glaube da haste es nicht ganz verstanden. Die Frage war auf das Original Video bezogen. Nicht auf die Zusätze die noch kommen wie Hintergrundbild etc.
    Schaue mein "Vorher" Bild oben an. Das ist Anamorph, weil das Game eigentlich mit einer 16:9 Einstellung gespielt wurde, aber mit einer 4:3 Aufnahme aufgezeichnet wurde. Folglich ist es Anamorph.


    Zum Hintergrundbild:
    Variante 1
    Soll Video und Bild zusammen 16:9 ergeben?
    ... nutzt man für Gewöhnlich wenn man das Video als Vollbild haben will, aber an der Seite ein paar Infos haben möchte.


    Quellcode

    1. ...
    2. #Videohöhe oder Bildhöhe muss entsprechend dem anderen angepasst werden
    3. #Auch sollte die FPS und der Farbraum stimmen.
    4. #(Am besten ist es immer das Bild dem Video anzupassen)
    5. #Video- und Bildbreite müssen der neuen Breite entsprechen
    6. #Videoauflösung beträgt 800x600
    7. #Zielauflösung soll eine 16:9 Auflösung werden
    8. #Erst berechnet man wievel noch zur endgültigen Breite für 16:9 fehlt
    9. # 266 = Integer (( 600 / 9 ) * 16) - 800
    10. nx = int((video.height / 9.) * 16) - video.width
    11. #Diese 266 Pixeleinheiten was in der Variable nx drin ist
    12. #kommen halt dann hinzu. Das ist die Breite für das Bild.
    13. #Also das Bild darf dann halt nur 266x600 groß sein.
    14. Background = Background.Spline16Resize(nx, video.height)
    15. #Jetzt fügt man beide Sachen wieder zusamm.
    16. #Das wäre einmal Video auf rechter Seite
    17. StackHorizontal(video, Background)
    18. #Und das hier auf linker Seite
    19. #StackHorizontal(Background, video)
    Alles anzeigen



    2 Variante
    Soll Bild schon 16:9 sein und Video drauf gelegt werden?
    ... nutzt man um einen Video auf ein Hintergrund zu legen, wo man auch die Chance hat das Video frei Zoombar zu lassen.


    Quellcode

    1. ...
    2. #Hintergrund sollte ein 16:9 Bild sein
    3. # Wenn das Video genauso groß sein soll von
    4. # der Höhe, so macht man folgendes (Lässt aber die erste Skalierung die man zuvor getätigt hat weg):
    5. video = video.spline16Resize((background.height / video.height) * video.width, background.height)
    6. #Hoffe das war so richtig jetzt? >.>
    7. #Obere linke Ecke
    8. Background.Overlay(video, 0, 0)
    9. #Obere rechte Ecke
    10. #Background.Overlay(video, background.width - video.width, 0)
    11. #Untere linke Ecke
    12. #Background.Overlay(video, 0, background.height - video.height)
    13. #Untere rechte Ecke
    14. #Background.Overlay(video, background.width - video.width, background.height - video.height)
    Alles anzeigen


    Die Position ist dabei frei Wählbar. Siehe auch oben im Nachher Bild bei dem Beispiel in meinem ersten Post.
  • Anzeige
    Also ich hänge jetzt mal ein Paar Bilder an, so wie es aussehen soll und wie es eigentlich aussehen würde, wenn ich nichts weiter am Video verändere.

    Spoiler anzeigen

    So sollte es aussehen:


    Und so sollte es nicht aussehen ist aber das Original Video und die streifen oben und unten sollen verschwinden.
    Wenn ich das aber in Sony Movie mache, dann ist das Bild zu groß und rechts bzw. Links fehlt etwas.



    Und noch ein anderes Retro Beispiel:


    Das eine Spiel habe ich mit JNES aufgenommen und das andere mit dem Snes9x



    Spoiler anzeigen

    So soll es aussehen:



    Und soweit bin ich jetzt mit dem SSM, da wird etwas verdeckt, also müsste das Video weiter nach links, ganz nach links.




    Zu guter letzt noch die Media Daten von dem Sonic Video:
    Spoiler anzeigen

    Allgemein
    Vollständiger Name : E:\LP\LPs von PC Roh\Tsonic_win 2015-02-01 22-00-15-004.avi
    Format : AVI
    Format/Info : Audio Video Interleave
    Format-Profil : OpenDML
    Dateigröße : 62,5 GiB
    Dauer : 25min
    Gesamte Bitrate : 347 Mbps
    Originale Source-Form/Vertrieb durch : Video:YUV420|CompressV3 Audio0:Mikrofon (3- Samson Meteor Mic) Audio1:Lautsprecher (2- High Definition Audio-Gerät)
    Kodierendes Programm : DxtoryCore ver2.0.0.123

    Video
    ID : 0
    Format : xtor
    Codec-ID : xtor
    Dauer : 25min
    Bitrate : 343 Mbps
    Breite : 1 280 Pixel
    Höhe : 960 Pixel
    Bildseitenverhältnis : 4:3
    Bildwiederholungsrate : 60,000 FPS
    Bits/(Pixel*Frame) : 4.659
    Stream-Größe : 61,9 GiB (99%)

    Audio #1
    ID : 1
    Format : PCM
    Format-Einstellungen für Endianess : Little
    Format-Einstellungen für Sign : Signed
    Codec-ID : 1
    Dauer : 25min
    Bitraten-Modus : konstant
    Bitrate : 1 536 Kbps
    Kanäle : 2 Kanäle
    Samplingrate : 48,0 KHz
    BitDepth/String : 16 bits
    Stream-Größe : 284 MiB (0%)
    Ausrichtung : Ausgerichtet an Interleaves
    Interleave, Dauer : 1000 ms (59,99 Video-Frames)

    Audio #2
    ID : 2
    Format : PCM
    Format-Einstellungen für Endianess : Little
    Format-Einstellungen für Sign : Signed
    Codec-ID : 1
    Dauer : 25min
    Bitraten-Modus : konstant
    Bitrate : 1 536 Kbps
    Kanäle : 2 Kanäle
    Samplingrate : 48,0 KHz
    BitDepth/String : 16 bits
    Stream-Größe : 284 MiB (0%)
    Ausrichtung : Ausgerichtet an Interleaves
    Interleave, Dauer : 1000 ms (59,99 Video-Frames)



    Hilft das vielleicht weiter?
  • Ich glaube Variante 2 werde ich dann für Boulderdash ausprobieren, da es auch ein 16:9 Bild werden soll ohne schwarze Balken. Und ich muss es ja noch groß genug ziehen, sodass oben und unten die Balken samt hervor lunzenden Framerate verschwinden ^^

    Aber danke schon mal für deine Hilfe, werde es nachher gleich mal ausprobieren ^^
  • Ich weiß nicht inwiefern du dann mit Crop etwas entscheidenes dabei entfernst. Aber an sich, ist alles ein einziger durchgang.

    Und welche Übergänge willst du denn nutzen? Die Spielinternen? Oder eigene?

    Weil die Spielinternen, brauchste dich in der Regel gar nicht kümmern. Sind doch alle im Video mit drin.

    Aber eigene einzubinden wäre dann halt noch was anderes. Musste mir schon genauer erklären. ^^
  • Alsooooo
    Das aufgenommene Video muss ich im Fall von Sonic Heroes zurecht schneiden, da die Lade Zeiten bis zu 2 min statt 5 Secunden betragen während der Aufnahme (und ja ich weiß DXtory ist für 60 FPS ungeeignet habe ich schon gehört, zumal mein Video Codec auch nicht all zu viel gutes dazu beiträgt...).
    Die Ladezeiten möchte ich natürlich heraus schneiden und nutze als Übergänge die von Sony Movie Studio. Die Sound Übergänge bleiben so oder so außenvor, da ich den Sound erst mit dem fertigen Video muxen werde.
    Aber eine Form der Übergänge währe von Seiten Avisynth noch interessant für mich, wenn es soweit ist. Und zwar der Übergang des Bildes am Rand. Das Bild am Rand, soll sobald das Sonic Team fertig durchgespielt ist, ersteinmal wieder auf das normale Bild am Rand umblenden und anschließend soll es erneut umblenden auf das neue Bild, von dem Team dass ich anschließend wähle. Diese Sache müsste ich via Avisynth machen, da es vorerst nicht möglich ist mit Sony Movie, da ich das Bild in keiner weise verfälschen möchte und Sony Movie nur mit dem Format arbeiten soll, was das Eigentliche Video her gibt.

    Ich hoffe das war verständlich erläutert ^^"
  • Für Übergänge kann man das AVISynth Plugin TransAll nutzen.
    avisynth.nl/users/vcmohan/TransAll/docs/index.html

    Eine kleine Vorführung der Vielfaltigkeit wäre hier zu sehen:
    youtube.com/watch?v=PeBupOtMs8g

    Anwenden kann man es dann wenn man die Clips hat, mit ledeglich nur einen einzigen Punkt.

    Als Beispiel:
    Wenn du nur einen Clip hast, brauchst du einen gewissen Punkt wo der Übergang rein soll. Diesen kannst du am besten so angeben:

    TransWipe(video.trim(0, 2000), video.trim(4000,video.framecount),100,"left")

    Damit werden 2000 Frames übersprungen und jeweils 50 Frames des ersten Clips und 50 Frames des zweiten Clips für einen TransWipe Übergang genutzt der von Links nach Rechts geht.

    Da deine Bilder auch jeweils nur Clips in AVISynth sind, kannst du das auch ganz konkret nur auf die Bilder anwenden lassen.