チュートリアル 12:
ムービーの再生

イントロダクション

このチュートリアルでは、Apple の QuickTime ビデオ再生ツールを使ったムービーの表示に焦点をあててみます。また、必要なビデオコンテンツを見つけるためのMax の組み込みファイルブラウザの使用法について、さらに、リアルタイムでムービー再生を扱う方法のいくつかについて学びます。

Apple の QuitckTime システムはムービー再生メカニズムとして有名なものですが、同時に、ソフトウェア開発者に対しては、様々なタイプのメディアコンテンツの再生や操作を行なうための豊富なツールボックスを提供しています。Maxの中のいくつかのオブジェクトの作成にも、QuickTime デベロッパツールが用いられています。その中でも最も重要なものの1つが imovie オブジェクトです。このオブジェクトはパッチャーの中でビデオの内容を表示します。ここでは、imovie を使ってビデオのロード(読み込み)や再生を行なうと同時に、再生速度や再生位置の操作を行ないます。また、インタラクティブなパフォーマンスを行なうパッチへの第一歩として、ビデオをロードし、それを切り替えることについても学びます。

imovie オブジェクトは、Max の中でビデオメディアを使用するために数多くの機能を提供しますが、Max のプラグインである Jitter オブジェクト群はさらに多くの拡張機能を提供しています。imovie の扱いに慣れてしまえば、同じ機能を持つJitterの jit.qt.movie がより使いやすいものであることがわかるでしょう。このオブジェクトでは、ビデオの再生だけでなく、ビデオを Jitter のマトリックス処理システムに送って動的にエフェクトを加えたり、合成処理を行なったり、より高度なビデオ処理によるシステムを開発したりすることができます。

imovie の基本操作

チュートリアルを開いて下さい。

チュートリアルファイルには、いくつかの小さなパッチと1つの大きな表示領域あります。この表示領域には、ファイルを開いた時点ではクロスヘア(十文字)の中に数字が表示されているはずです。実際には、この表示領域が imovie オブジェクトです。imovie を使うとQuickTime ムービークリップを直接パッチの中に埋め込むことができます。クロスヘアと数字は、countdoun15.movというビデオクリップで、パッチを開いたときにimovieオブジェクトがロードしたものです。このimovie のインスタンスとコントロールメッセージを使って、QuickTimeムービーの再生やコントロールを行ないます。

imovie オブジェクトのすぐ上には、imovieオブジェクトにコマンドを送信するメッセージボックスが並んでいます。上の4つのメッセージは基本的なコマンドです。read メッセージでは指定したムービーファイルを読み込みます。start では再生を開始します。stopではムービーファイルの再生を停止します。dispose では、カレントのムービーを、imovie オブジェクトのメモリから削除します。ムービーをメモリから削除(dispose)した後、read コマンドを使ってそのムービーを再び読み込むことができます。メッセージボックスをクリックしてみて下さい。start メッセージを送信するたびに、ムービーの先頭から再生が始まる点に注意して下さい。

次は縦に並んでいる、それぞれ異なった5個の rate メッセージ群です。このrateメッセージは imovieオブジェクトに対してムービークリップの再生速度の変更を指示するものです。値 1. は通常の速度での(前方への)再生を意味します。rate -1. では、ムービークリップを通常の速さで後方に再生(逆再生)し、rate 0.5 ではムービークリップを1/2の速さで前方に再生します。rate 0. というメッセージを送信するとムービーがその場で停止することに注意して下さい。続けて rate 1. メッセージ(あるいは、他の速度のメッセージ)を送信すると、停止した位置から再生を続けます。

ムービーが最後まで進んだとき、start メッセージをクリックすると再び再生がスタートします。しかし、rate メッセージの右側には、代わりにこれを行なってくれるメッセージがあります。loop メッセージを使うとビデオファイルを繰り返しループ再生させることができます。toggle ボックスをクリックして、ループをオンにして下さい。これで、ムービーが最後まで進むと、すぐに最初から再スタートを始めるようすを見ることができます。この再生は何回も繰り返されます。

imovie オブジェクトは、再生しているQuickTime ムービーに関する情報の報告を行なうこともできます。imovie情報の問い合わせには、数多くの様々なメッセージが使用できます。これらに関してはリファレンスマニュアルページで調べることができます。最も重要な情報の1つとして、ムービーのデュレーション(持続時間)があります。これは、ムービーの再生を1回行なうために必要な時間のことです。この情報は、ミュージックスコアの生成や、フィルムのどの部分を再生しているかをわかりやすく表示するための設定に利用できます。どのような場合でも、imovie に duration メッセージを送信すると、imovie は左端のアウトレットからムービーのデュレーションを(ミリ秒単位で)送信します。

ファイルブラウザの使用

これまで試してきたメッセージでimovie オブジェクトの基本的なコントロールが可能になりますが、新しいムービーファイルを追加したい場合にread メッセージを変更しなければならないのはかなり面倒です。1つの方法は、read メッセージのアーギュメントを無くしてしまうことです。これにより、ダイアログボックスが開き、コンピュータの中の任意のファイルを選択することができるようになります。しかし、imovie オブジェクトに新しいムービーを追加する最も簡単な方法は、ファイルブラウザの使用でしょう。

File メニューから New File Browser を選ぶと、ファイルブラウザウィンドウが開きます。このウィンドウにはファイル名、ファイルタイプ、修正日、カスタムタグが表示されます。このカスタムタグは Max がパッチプログラミングに役立つのではないかと判断したすべてのファイルに付けられます。

"everything" 表示(これがデフォルトになっています)は役立ちそうに見えないかもしれませんが、特定のファイルを探したい場合、通常の方法で必要なファイルを絞り込むことができます。例えば、ブラウザの右上にある search ボックスに、たいていのQuickTime ムービーファイルで使用されるファイル拡張子 .mov を入力すると、このテキストで検索を行ない、ファイル名に .mov を含むすべてのファイルが表示されます。

このブラウザでは、(ファイル名ではなく)必要なファイルタイプによる検索を行なうこともできます。search ボックスをクリアして、その右にある + ボアンをクリックして下さい。ウィンドウの上部に、検索を行なう基準を入力するためのペインがもう1つ表示されます。左側のドロップダウンメニューで検索するフィールドを選ぶことができます。これを "Kind" に変更し、"moviefile" を選ぶと、ファイルが拡張子.mov を使用しているか、別のムービー識別子を使用しているかには関係なく、直ちにすべてのムービーのリストを表示させることができます。この検索条件を頻繁に使用する場合には、ウィンドウの下部にある + ボタンをクリックして、検索条件をファイルブラウザウィンドウに追加することができます。これにより、この検索結果を保存し、後で使用することができます。

これで利用できるムービーのリストが表示されました。ムービーの名前を選択し、これをimovie オブジェクトにドラッグすると、ムービーを開くことができます。ファイル名をクリックして(実際には他の列でも構いません)、パッチャーウィンドウにドラッグして下さい。imovie オブジェクトの上にマウスを置くと、オブジェクトに青いボーダー(境界線)が現れます。これは、ドラッグしたファイルを受け取ることができるということを意味します。この場所でマウスボタンを放すと、ムービーが imovie オブジェクトにロードされます。

マウスを使用した速さの変更

このパッチで最初に行なった実験では、rate メッセージを使って再生速度を決定しました。また、速度(rate)の値が 0. より大きい場合には前方へ再生され、0. より小さい場合には逆再生されることもわかりました。この考え方をマウストラッキングと共に使用して、リアルタイムでのビデオのスクラブ/スクラッチを実行してみます。

パッチの 1と表示されたセクションでは metro がmousestate オブジェクトをポーリングするようにセットされ、mousestate の第2アウトレット(水平方向のマウス位置)の値が使用されています。この値はナンバーボックスで表示され、(scale オブジェクトによって)-2 から 2 の範囲にスケールされます(スクリーンの幅が1024 ピクセルより大きい場合には、この値もより大きなものになります)。この結果を使って rate メッセージが作られ、imovie に送られます。

toggle ボックスで metro をオンにすると、パッチのこの部分で水平方向のマウス位置がトラッキングされていることがわかります。movie を(start メッセージによって)スタートさせ、(loop $1 というメッセージボックスに接続された toggle ボックスで)ループをオンにして下さい。スクリーンを横切るようにマウスを動かして下さい。カレント(現時点)のマウス位置によって、再生スピードが速くなったり、遅くなったり、逆方向に再生されたりすることがわかるでしょう。0を通過するように操作すると(0 を通過させて正の値を出力し、より大きな絶対値を持つ負の数に戻って下さい)、役に立つ VJ 操作として認識されるようになった、典型的なスクラッチ機能を作り出すことができます。

マウスを使用した再生位置の変更

セクション1のmetro をオフにして、セクション 2 のmetro をオンにして下さい。この小さなサブパッチは最初のパッチと非常に良く似ています。このパッチはマウスの動きをトラッキングして、その値をビデオ再生メッセージに変換しています。このケースでは、垂直方向のマウス位置を使って、カレントの再生位置を設定しています。この機能を正しく実行させるためには、カレントムービーのデュレーション(持続時間)の値がひつようです。この値は duration メッセージボックス(パッチ上部の loop セレクタのすぐ上にあります)をクリックすることによって取得できます。

適切な duration の値がパッチに送信された後では、垂直方向のマウス位置が0から 10000(countdownビデオ場合)の範囲にスケールされ、imovie のインレットに送信されているのを見ることができます。imovie オブジェクトは入力された整数値を「"current position"(再生するカレント位置)」を設定するものとして扱うため、ムービーは直ちにその位置にジャンプします。

しかし、デフォルトでは、再生位置がセットされると、カレントの速度で再生が続行されます。QuickTime ムービーのこの動作は、常にカレントの速さで実行されるということを表すものです。ムービーの再生位置を完璧にコントロールしたいと思う場合には、rate を 0. に設定してスタートさせる必要があります。(rate 0. メッセージボックスを使って)この処理を行なうと、マウスの垂直の動きによって、ムービー全体をフレーム単位のステップで操作することが可能になります。

複数のムービの切り替え

imovie の出力をコントロールするもう1つの方法は、複数のムービーをロードし、それらの間での切り替えを行なうことです。他のメディア関連のオブジェクトと異なり、imovie はいくつかの別々なムービーファイルをロードすることができます。その後、switch メッセージを使ってファイル間を移動してアクティブなムービーを決定することができます。

パッチの 3 と表示された部分は、複数のビデオをロードし、キューを送る方法を示しています。ここでは、4つのファイルがサーチパスから呼び出され、最も上にあるメッセージボックスによって imovie オブジェクトに読み込まれます。次に、キーボード入力を監視する key オブジェクトがあります。文字 "a"、"s"、"d"、"f"(それぞれ、ASCII 値 97、115、100、102になります)はそれぞれ select オブジェクトを使って switch 文に割り当てられています(ビデオを再スタートさせるために、switch  メッセージの後に start メッセージが追加されています)。4つの部分からできている read メッセージボックスをクリックすると、そのビデオがロードされることがわかります。その後、キーボードの "a"、"s"、"d"、"f" キーを押して表示させたいムービーを選び、4つのファイルの中からそのムービーを使用します。この処理は、望み通りの速さで実行することができます。ムービーファイルは、すでに imovie にロード済みの状態であるため、これらを切り替えてもほとんどレイテンシ(遅れ)は生じません。

結び

ここでは、ビデオコンテンツの再生と操作を行なうことが可能なimovie オブジェクトに焦点をあててきました。簡単なムービーの再生、停止に加え、メッセージによって再生速度を変更したり、これをマウスの動きでコントロールする方法について学びました。また、マウスの動きを使ってカレント再生位置を変更する方法も学びました。最後に、imovie が数多くのムービーをロードすることができることを学び、キーボード入力によって高速なムービーの切り替えを行なうことができる簡単なパッチについて学びました。これらはすべて、imovie オブジェクトによって提供される簡単なコマンドに基づいたものです。

参照

imovie

パッチャーウィンドウ内でのQuickTime ムービーの再生