Macの手書き説明書

macOSのアプリ紹介と基本的な使い方を解説

複数開いたQuickTime動画をモザイク状に配置しなおし、同時再生するAppleScript

macosxhints.comで掲載されていたネタです。

QuickTime動画を複数開いた状態で下記のAppleScriptを実行すると、綺麗に敷き詰めて配置しなおされ、同時に再生されます。

QuickTime動画をモザイク状に並べて再生する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 controller type of doc to none
     set looping of doc to true
     set {wi, hi} to natural dimensions of doc
     if wi / window_width > hi / window_height then
        set dimensions of doc to {window_width, hi / (wi / window_width)}
     else
        set dimensions 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
上記のスクリプトをスクリプトエディタで開く

サイズが同じ動画ならばデスクトップいっぱいにぴっちり綺麗に並べて表示されますが、ばらばらならばこんなものでしょうか。

コントローラ部分が隠されて表示され、ループ再生になります。

広告


関連記事

広告

この記事を共有する

広告

関連記事

0 Comments

Add your comment