QuickTime ムービーをアプリケーション上で扱う

やっぱり、QuickTime ムービーは表示させていじらないと意味がないので、ここではそれを。

サンプルに入ってる CocoaRepl を使って、一からウィンドウを描いて、なんてしてもいいけど、面倒なので。

ちなみに、CocoaRepl は /Developer/Examples/Ruby/RubyCocoa/CocoaRepl/CocoaRepl.xcodeproj にあります。

プロジェクトを開いて、Command + R でビルドして実行すると一行ごとに入力したスクリプトを実行できます。

でも、ここでは Xcode と Interface Builder を使ってアプリケーションとして実行(自分がそうやったので)。

まずは、ib_outlet で、QuickTime Movie View(QTMovieView)に結びつけるアウトレットを指定する。@qtView としておく。

そして、Interface Builder で、ウィンドウに QuickTime Movie View を追加して、結びつける(バインドするって言うのかな?)。

QTMovie の準備

そして、QuickTime ムービーを扱うでやったように、@qtMovie という QTMovie オブジェクトを作る。

error = NSError.alloc.init

@qtMovie = QTMovie.movieWithFile_error(File.expand_path("sample.mov",error)

@qtMovie = QTMovie.movieWithURL_error(NSURL.fileURLWithPath("sample.mov"),error)

QTMovieView の基本設定

まず、@qtView (QTMovieView) の設定など。いろいろできるけど、自分が使ったものだけ少し。

setPreservesAspectRatio(true/false) 元のムービーのアスペクト比を保つかどうか設定する

@qtView.setPreservesAspectRatio(true)

setControllerVisible(true/false) コントローラを表示するかどうか設定する

@qtVIew.setControllerVisible(true)

setEditable(true/false) 編集可能にするかどうか

@qtView.setEditable(true)

setMovie(QTMovie) 表示するムービーを指定する

@qtView.setMovie(@qtMovie)

これで、ウィンドウ上の QuickTime Movie View に指定したムービーが表示されるはず。

コントロール

ムービーをコントロールするには、QTMovie オブジェクト自身もしくはそれを表示している QTMovieView に対して操作する。

QTMovieView に対してのメソッドは ib_action なので、sender が必要。まあ、nil にしておいて大丈夫だと思う。

play 再生開始

@qtMovie.play

@qtView.play(nil)

stop 停止

@qtMovie.stop

@qtView.stop(nil)

gotoBeginning ムービーの最初に移動

@qtMovie.gotoBeginning

@qtView.gotoBeginning(nil)

gotoEnd ムービーの最後に移動

@qtMovie.gotoEnd

@qtView.gotoEnd(nil)

編集

ムービーの簡単な編集をするには、QTMovieView に対して操作をする。

selectAll(sender) ムービーのすべてを選択する

@qtView.selectAll(nil)

copy(sender) ムービーの選択された範囲をコピーする

@qtView.copy(nil)

cut(sender) ムービーの選択された範囲をカットする

@qtView.cut(nil)

delete(sender) ムービーの選択された範囲を消去する

@qtView.delete(nil)

paste(sender) ムービーの選択された位置にクリップボードにあるムービーを挿入する

@qtView.paste(nil)

replace(sender) ムービーの選択された範囲をクリップボードにあるムービーと置き換える

範囲が選択されていない場合はムービー全体を置き換える

@qtView.replace(nil)

add(sender) ムービーの選択された位置にクリップボードにあるムービーを別のトラックに追加する

@qtView.add(nil)

addScaled(sender) ムービーの選択された位置にクリップボードにあるムービーを別のトラックに長さを調整して追加する

@qtView.addScaled(nil)

trim(sender) ムービーを選択した範囲で切り取る(選ばれていないところがなくなる)

@qtView.trim(nil)

バインディング

これらはボタンを作って ib_action としてスクリプトでコントロールしてもいいけど、もっと簡単な方法もある。

QuickTime Moive View を右クリックすると、次のようなオプションがでる。これで、play、pause などをそれぞれの機能を持たせたいボタンに

結びつけるだけで、ボタンが機能するようになる。