user23569
user23569

Reputation: 21

Use QuickTime to create a "tiled video wall" or "video mosaic"

so, there was some discussion several years ago about creating a video wall effect on mac using applescript to produce an app but the code appears to no longer reflect the way QT works on Mavericks.

what this does: you would "drop" a bunch of video clips onto the app, and it would automagically resize them all and loop them to create a cool "video wall mosaic" effect on your screen - very cool if you output to a large TV or a projector-to-wall

any idea how to update/repair this code to generate a fix for QT under mavericks? here's the most recent iteration, though if you test under applescript editor it seems to not be working...

on open filelist
    tell application "QuickTime Player" to open filelist
    run
end open
on run
    tell application "QuickTime Player"
        set ratio to 4 / 3

        tell application "Finder" to set display_bounds to bounds of window of desktop
        set display_width to (item 3 of display_bounds)
        set display_height to (item 4 of display_bounds) - 42 -- menu height + title bar
        set window_count to count of windows
        set max_pixels to 0
        repeat with potential_cols from 1 to window_count -- try all possibilities - hardly optimal but who cares.
            set potential_rows to round (window_count - 1) / potential_cols + 1 rounding toward zero
            set {potential_window_width, potential_window_height} to {round display_width / potential_cols rounding toward zero, round display_height / potential_rows rounding toward zero}
            if potential_window_width / potential_window_height < ratio then
                set {potential_window_width, potential_window_height} to {potential_window_width, round potential_window_width / ratio rounding toward zero}
            else
                set {potential_window_width, potential_window_height} to {potential_window_height * ratio, potential_window_height}
            end if
            set used_pixels to potential_window_width * potential_window_height * window_count
            if used_pixels > max_pixels then
                set {window_width, window_height, cols, rows} to {potential_window_width, potential_window_height, potential_cols, potential_rows}
                set max_pixels to used_pixels
            end if
        end repeat

        set {x, y} to {0, 0}
        set wins to (get every window)
        repeat with win in wins
            set doc to document of win
            set «class mctl» of doc to «constant playnone»
            set looping of doc to true
            set {wi, hi} to natural dimensions of doc
            if wi / window_width > hi / window_height then
                set «class pdim» of doc to {window_width, hi / (wi / window_width)}
            else
                set «class pdim» of doc to {wi / (hi / window_height), window_height}
            end if
            set x to x + 1
            if x = cols then set {x, y} to {0, y + 1}
        end repeat

        set {x, y} to {0, 0}
        set wins to (get every window)
        repeat with win in wins
            set {wi, hi} to natural dimensions of doc
            if wi / window_width > hi / window_height then
                set bounds of win to {window_width * x, 22 + window_height * y, window_width * x + window_width, 22 + window_height * y + hi / (wi / window_width)}
            else
                set bounds of win to {window_width * x, 22 + window_height * y, window_width * x + wi / (hi / window_height), 22 + window_height * y + window_height}
            end if
            set x to x + 1
            if x = cols then set {x, y} to {0, y + 1}
        end repeat
        set wins to (get every window)
        repeat with win in wins
            play document of win
        end repeat
        activate
    end tell
end run

Upvotes: 2

Views: 1769

Answers (1)

adamh
adamh

Reputation: 3292

This script works fine with QuickTime Player 7.

Apple still makes it available to make up for all the missing functionality in recent versions.

If it's not already on your machine try this download http://support.apple.com/kb/DL923

Then in the script rename all the "QuickTime Player" references to "QuickTime Player 7"

Upvotes: 2

Related Questions