[追記した][Blog書いた]QuickTIme Player Xで複数動画ウィンドウをタイル状に並べてランダムにフルスクリーン化しながらリピート再生してみた[OSX][AppleScript]

QuickTime_Player_app
AppleScript_Editor_app
MacBook Proのモニタ全体に複数の動画ウィンドウをタイル状に隙間なく表示し、ループ再生させながら適当な間隔でその中からランダムに選択されたウィンドウが自動的にフルスクリーン化表示され設定時間が過ぎるとまたタイル状のマルチウィンドウに戻るのを繰り返しながらループ…という感じのものをやる必要があった.

まずこんな感じの機能を持った動画再生アプリケーションは?とググってみるがなさげ…まあないわな.
しょうがないのでQuickTIme PlayerをAppleScriptで制御する方向で.複数ウィンドウのタイリングは“WindowResizeSuruyo”というユーティリティにまかせれば簡単そうかな?と思い使わせてもらったけどよくわからない.ウィンドウのタイリングもAppleScriptで書けばいいのだろうとは思うけど(これが使えそうかも MacScripter / a script to “tile” all windows from the front application).

タイリングするサイズはWindowResizeSuruyoの初期値を使って設定し4画面か9画面を選べるようにしてある.MacBook Pro 13’で11:9なウィンドウをタイリングしたから4か9画面になる感じ.モニタによってWindowResizeSuruyoの設定値を変更したり画面数を変更する必要があるのかもしれない.

QuickTIme Playerは元々タイトルバーやコントローラがすぐに非表示になるのでタイリングするには都合がよかった.defaultsを変更すればタイトルバーを消せるようだ Mac QuickTime Player Xのタイトルバーを非表示にする裏技 コントローラも消せるのかもしれないけど今回はこのdefaultsの変更は使ってない.

ビデオウィンドウをタイリングして敷き詰めたりフルスクリーン表示すると気になるのがマウスカーソルなんだけど、制御の方法がわからなかったからググってCocoaRubyを使うこちらの方法を使わせていただいた あらゆる操作を実行可能マウスカーソルを動かす方法いろいろ これでAppleメニューの位置に移動させてる.

音量はマルチウィンドウ時は全てのビデオの音声を小さく流し、フルスクリーン時はそのビデオの音声だけを大きく流すようにしてある.

まずAppleScriptがわかってないし使い捨て殴り書きだからもう内容忘れちゃったけど、とりあえず目的を達成したのは以下のスクリプトになってた.二度と使う事も無いと思うけど万が一時のために載せておく.

--> Created by http://about.me/saka on Ver.0.1.0(2013/04/18) -> Ver.0.1.1(2013/07/13) 
set filesDir to "Macintosh HD:Users:User:Movies:your:dir:" --> 再生ファイルディレクトリパス
set minVol to 1 --> マルチウィンドウ時音量(最小)
set maxVol to 7 --> フルスクリーン時音量(最大)
set presenVtime to 60 --> フルスクリーン再生時秒数
set multiVtime to presenVtime / 4 --> マルチウィンドウ再生時秒数

tell application "Finder" to set myFiles to every file of folder filesDir --> 再生ファイルリスト
set myFilesCount to count myFiles --> 再生ファイルリスト数

--> 再生ウィンドウ数選択ダアログ表示(4画面/9画面選択)
display dialog "Maximum video windows:" buttons {"4 windows", "9 windows"} default button "9 windows"
set button_returned to button returned of result
if button_returned is "4 windows" then
	set multiWindows to 4
else if button_returned is "9 windows" then
	set multiWindows to 9
end if

--> ウィンドウ数とディレクトリ内ファイル数が一致しない場合再生ファイル数を調整
--> ファイル数が少ない場合 -> ファイル数をそのまま使用
--> ファイル数が多い場合 -> 指定ウィンドウ数を使用
set addFiles to 0 # 追加ファイル数
if myFilesCount < multiWindows then
	set addFiles to myFilesCount
else
	set addFiles to multiWindows
end if

--> 再生用ランダムファイルリスト生成
--> 重複ファイルを除外し追加
set randomFilesList to {} --> ランダム追加ファイルリスト
set c to 0 --> 追加ファイル数カウンタ
repeat until c = addFiles
	set randomSelect to some item of myFiles as text
	if randomFilesList = {} then
		set the end of randomFilesList to randomSelect as text
	else
		--> 重複したファイル追加は除外する
		if randomSelect is not in randomFilesList then
			set the end of randomFilesList to randomSelect as text
		end if
	end if
	set c to count randomFilesList
end repeat

--> ランダムに追加されたファイルをQuickTime Playerで開く
set openWindowsNameList to {} --> オープン済みウィンドウ名リスト
repeat with theFile in randomFilesList
	--> display dialog theFile as string
	tell application "QuickTime Player"
		open theFile as alias
		set theName to name of window 1
		set the end of openWindowsNameList to theName
	end tell
end repeat

delay 5 --> ファイルオープンウェイト

--> QuickTime Playerウィンドウ以外全てを非表示
tell application "QuickTime Player"
	activate
end tell
tell application "Finder"
	set visible of processes whose frontmost is false to false
end tell
tell application "QuickTime Player"
	activate
end tell

--> タイリングウィンドウ設定(WindowResizeSuruyo.app使用)
--> http://memogakisouko.appspot.com/WindowResizeSuruyo.html
if multiWindows = 4 then
	tell application "WindowResizeSuruyo"
		ResizeWindow "6,6,0,0,2,2&6,6,3,0,5,2&6,6,0,3,2,5&6,6,3,3,5,5"
		quit
	end tell
else
	tell application "WindowResizeSuruyo"
		ResizeWindow "6,6,0,0,1,1&6,6,2,0,3,1&6,6,4,0,5,1&6,6,0,2,1,3&6,6,2,2,3,3&6,6,4,2,5,3&6,6,0,4,1,5&6,6,2,4,3,5&6,6,4,4,5,5"
		quit
	end tell
end if

--> 全ドキュメントをループ再生設定/最小ボリューム設定しマルチウィンドウでQuickTime Player再生開始
tell application "QuickTime Player"
	tell every document
		set looping to true
		set audio volume to minVol
		play
	end tell
end tell

--> CocoaRubyを使用しマウスカーソルをApple menuへ移動
--> http://d.hatena.ne.jp/zariganitosh/20120110/moving_mouse_technique
do shell script "/usr/bin/ruby -e \"require 'osx/cocoa'\" -e \"OSX::CGWarpMouseCursorPosition(OSX::CGPointMake(" & 26 & "," & 12 & "))\""

delay multiVtime --> マルチウィンドウ状態で表示するウェイト

--> マルチウィンドウ -> フルスクリーン --> マルチウィンドウ --> ループ、をそれぞれ定義時間秒数表示
--> ランダムに選択されたウィンドウをフルスクリーン化し設定時間経過後フルスクリーン解除
--> フルスクリーン化の画面遷移と解除の元ウィンドウサイズ/位置に戻る画面遷移を利用
--> QuickTime Playerが終了していればスクリプトも終了
repeat
	--> ランダムな再生順リストを生成
	set openWindowsNameListCount to count openWindowsNameList
	set randomList to {} --> ランダム追加リスト
	set c to 0 --> 追加リスト数カウンタ
	repeat until c = openWindowsNameListCount
		set randomSelect to some item of openWindowsNameList as text
		if randomList = {} then
			set the end of randomList to randomSelect as text
		else
			--> 重複したリスト追加は除外する
			if randomSelect is not in randomList then
				set the end of randomList to randomSelect as text
			end if
		end if
		set c to count randomList
	end repeat
	--> 再生順リスト順に"フルスクリーン -> マルチウィンドウ -> ループ"をリピート
	repeat with a in randomList
		try
			tell application "QuickTime Player"
				set audio volume of every document to 0
				set presenting of document a to true
				set audio volume of document a to maxVol
				delay presenVtime --> フルスクリーン状態で表示するウェイト
				set presenting of document a to false
				set audio volume of every document to minVol
				delay multiVtime --> マルチウィンドウ状態で表示するウェイト
			end tell
		on error
			quit --> QuickTime Playerが終了されていれば終了
		end try
	end repeat
end repeat

なんとなく動いてる感じ?ぼんやりビデオ見るのとかに使える?わかんなけど.
よくわかんないから誰かいい感じに仕上げて連絡して、ビールおごる.

まあ、そんな感じで.

2013/07/13 追記.

数ヶ月過ぎ、ふと動かしてみるとQuickTIme PlayerがファイルをOpenするところで”An unknown error occurred (1)”とエラーを吐いて動作しない.

Twitterに何気なくつぶやいてみると…なんとあの! @Piyomaru 先生から怒涛のダメ出しで問題点をご指摘いただいた!

ありがたや.

2行目を以下に修正し
set filesDir to "Macintosh HD:Users:User:Movies:yoru:dir:"
50行目に以下を追加して
	--> display dialog theFile as string
52行目を以下に修正すると
		open theFile as alias

おお、とりあえず動いたよ!

なぜか前のコードは”/Users/user/Movies”配下にmovファイルと一緒に置いておくと動作してしまうのであった…orz.
それにこのポストにはこう書いておいた、
> よくわかんないから誰かいい感じに仕上げて連絡して、ビールおごる.

@Piyomaru 先生にビールおごるべきだと思う.

まあそんな感じで.

広告

コメント1件

  1. ピンバック: [Blog書いた]QuickTIme Player Xで複数動画ウィンドウをタイル状に並べてランダムにフルスクリーン化しながらリピート再生してみた、をまたまた修正した[OSX][AppleScript] | iPhoneでBlogしてみる

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中