ImageSource Bilder unterschiedlicher Größe öffnen

  • Hi zusammen,

    Ich habe hier eine fortlaufende Anzahl von Bildern (jpg's) aus denen ein Stream gebasstelt werden soll.
    Quasi 'ne Dia-Show ;)

    Nun habe ich 'nen blank clip in Schwarz und lege die jeweiligen Bilder darüber um alles in 16:9 FullHD zu bekommen.
    Ich will aber nicht jedes Bild einzeln aufrufen sondern die ganze Kette laden: ImageSource("%03d.JPG",1,fps=30)
    Nur scheinbar geht das nicht. Das erste Bild legt den Standart fest wie hoch/breit der Clip sein wird. Kommt ein anderes Bild gibt's ne Fehlermeldung: Image must have identical heights

    Gibt's noch 'ne andere Möglichkeit ?

  • Zitat

    Gibt's noch 'ne andere Möglichkeit ?


    ja,in einem Videobearb.Programm
    Projektsettings erstmal einstellen,zum Bsp. 1920 x 1080 [oder auch 4K] Bildanzeigelänge einstellen 3 oder 4 oder 5 Sekunden.
    Dann den ganzen Ordner mit den Tiffs,Targa BMB,JPG.....auf die Timeline schmeissen.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

    Einmal editiert, zuletzt von Goldwingfahrer (19. Oktober 2015 um 11:40)

  • Nicht in AviSynth mit ImageSource. Wenn nicht alle Bilder die gleichen Eigenschaften haben, dann muss jedes Bild in seine eigene Clipvariable geladen werden. Vielleicht gibt es noch andere Source-Plugins, die Bilder beim Laden auch auf Zielgröße skalieren und bordern können, aber ImageSource tut das nicht.

  • Hi zusammen,

    Ich habe hier eine fortlaufende Anzahl von Bildern (jpg's) aus denen ein Stream gebasstelt werden soll.
    Quasi 'ne Dia-Show ;)

    Nun habe ich 'nen blank clip in Schwarz und lege die jeweiligen Bilder darüber um alles in 16:9 FullHD zu bekommen.
    Ich will aber nicht jedes Bild einzeln aufrufen sondern die ganze Kette laden: ImageSource("%03d.JPG",1,fps=30)
    Nur scheinbar geht das nicht. Das erste Bild legt den Standart fest wie hoch/breit der Clip sein wird. Kommt ein anderes Bild gibt's ne Fehlermeldung: Image must have identical heights

    Gibt's noch 'ne andere Möglichkeit ?


    Das geht mit Sicherheit mit GScript oder ähnlich. Frag' mal auf Doom9.

  • Noch mal für alle später eingestiegenen: Es geht nicht einfach nur darum, Bilder zu öffnen – das alleine können mehrere Plugins. Es geht darum, unterschiedlich große Bilder beim Öffnen vollautomatisch direkt in eine Zielgröße einzupassen, damit die daraus resultierenden Clips vereinigt werden können.

  • Nur so als Einwurf: Eventuell könnte man das mit ffmpeg machen, da das Ergebnis in ein lossless Format speichern und dieses in Avisynth weiterverarbeiten, davon ausgegangen es soll noch spezielles Filtering vorgenommen werden.
    (Man könnte auch mit Imagemagick oder dergleichen die Bilder erst auf eine Größe bringen und sie dann in Avisynth laden,..)

  • Mit Immaavs müsste das jedenfalls gehen:

    Zitat

    ImmaRead (string filename, int start, int end, int size_x, int size_y, bool animation, bool gapless, bool info, string magick_home)

    filename is the image or image sequence (multiple images) which should be read. For an image sequence, the frame number substitution should be specified using "sprintf syntax", or using wildcards (sorted by filename, subfolders are not included). For example, the files written by ImmaWriter's default parameters can be referenced with "c:\%06d.jpg" (meaning filenames with 6 digits, thus C:\000000.jpg, C:\000001.jpg, etc ...). The start and end of the image sequence should be specified with the start and end parameters. When (size_x, size_y) is not specified, the images in the sequence should have the same width and height, otherwise a black frame is returned with an error message. When (size_x, size_y) is specified, the images in the sequence are scaled to their maximum and black borders are added when necessary. Also if an image (within the sequence) doesn't exist, a black frame is returned with an error message.

    Bei FFmpegSource2 bin ich mir allerdings nicht sicher, ob man dort mehrere Bilder auf einmal einlesen kann.

    Zitat

    FFVideoSource(string source, int track = -1, bool cache = true, string cachefile = source + ".ffindex", int fpsnum = -1, int fpsden = 1, int threads = -1, string timecodes = "", int seekmode = 1, int rffmode = 0, int width = -1, int height = -1, string resizer = "BICUBIC", string colorspace = "", bool utf8 = false, string varprefix = "")

    int width = -1, int height = -1

    Sets the resolution of the output video, in pixels. Setting either dimension to less than or equal to zero means the resolution of the first decoded video frame is used for that dimension. These parameters are mostly useful because FFMS2 supports video streams that change resolution mid-stream; since Avisynth does not, these parameters are used to set single resolution for the output.

    string resizer = "BICUBIC"

    The resizing algorithm to use if rescaling the image is necessary. If the video uses subsampled chroma but your chosen output colorspace does not, the chosen resizer will be used to upscale the chroma planes, even if you did not request an image rescaling. The available choices are FAST_BILINEAR, BILINEAR, BICUBIC (default), X, POINT, AREA, BICUBLIN, GAUSS, SINC, LANCZOS and SPLINE. Note that SPLINE is completely different from Avisynth's builtin Spline resizers.

  • Ich schreibe mal eine Lösung mit ffmpeg/ffprobe. In der ersten Schleife wird die jeweils größte Bildbreite und -höhe im aktuellen Ordner bestimmt. In der zweiten Schleife werden die Bilder zentriert auf die so berechnete Fläche gesetzt und mit schwarzen Rändern ringsum und dem Präfix "Pad-" ausgegeben. Die Rechnerei wird von ffmpeg erledigt, weil das im Gegensatz zur Skriptsprache mit Dezimalzahlen umgehen und richtig runden kann. Mit Videos müßte es genauso gehen, das Mapping und die Encoding-Parameter sollten dann ergänzt werden. Ich hab das nicht ewig getestet und wie immer gilt: patches welcome :)

    3 Mal editiert, zuletzt von Endoro (3. November 2015 um 03:00) aus folgendem Grund: kleinere Korrekturen

Jetzt mitmachen!

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