使用QuickTime创建“平铺视频墙”或“视频马赛克”

时间:2013-11-22 15:57:27

标签: video applescript quicktime osx-mavericks

因此,几年前有一些关于使用applescript在mac上创建视频墙效果以生成应用程序的讨论,但代码似乎不再反映QT在Mavericks上的工作方式。

这是做什么的:你会将一堆视频片段“丢弃”到应用程序上,它会自动调整它们的大小并循环它们以在屏幕上创建一个很酷的“视频墙马赛克”效果 - 如果你输出的话非常酷到大型电视机或投影机到墙壁

任何想法如何更新/修复此代码以在特立独行下生成QT修复?这是最近的迭代,但是如果你在applescript编辑器下测试它似乎不起作用......

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

1 个答案:

答案 0 :(得分:2)

此脚本适用于QuickTime Player 7。

Apple仍然可以弥补最近版本中缺少的所有功能。

如果您的计算机上尚未安装,请尝试下载http://support.apple.com/kb/DL923

然后在脚本中将所有“QuickTime Player”引用重命名为“QuickTime Player 7”