おとやすみ日記

ゲームプランナー、一児の父です。

MaxのJitterで動画プレーヤを作る

最近、5年ぶりくらいにMax/MSP/Jitterをいじってます。

ほんとはMax6にアップデートしたいんだけど、ダウンロード版でも19,800円かかるのと、ほとんど忘れてしまっているので、当分はMax5で十分です。

今日はとりあえずリハビリがてら基本中の基本、動画再生。

 パッチの画面はこんな感じ。

f:id:otoyasumi:20131227220848j:plain

 一番下の「jit.qt.movie 480 360」と書かれているのが、objectと呼ばれているボックス。ここにテキストを入力して色んな用途のobjectを作成します。

ここで入力した「jit.qt.movie 480 360」を説明すると、「jit.qt.movie」までがオブジェクトの用途を決めるためのテキストで、以下「 480 360」はアーギュメントと呼ばれるいわば引数みたいなもんです。

jit.qt.movie
QuickTimeムービーファイルを開いて再生するオブジェクト 

アーギュメント(上でいう480 360 の部分)

この値は、オブジェクトがビデオの1フレームをメモリに保持するために使われる横と縦(幅と高さ)の大きさを指定し、これによってこの大きさのフレームを格納するのに十分なRAMを要求します。(参考記事より転載)

なるほど。知らなかったけど、この引数部分でメモリを要求してたのか。

なんでも、読み込もうとするムービーのサイズよりも小さい値を入力すると、十分なメモリ領域を確保できないので、各フレームのピクセルの一部を無視しなきゃいけないらしい。

逆にムービーサイズより大きい値を引数値で入力すると、余ったメモリ分を複製されたデータで満たそうとするとのこと。こっちは正直よくわかりません。笑

 

この「jit.qt.movie 480 360」オブジェクトに「read」メッセージを送り動画ファイルを選択すると、ムービーデータが「jit.qt.movie」オブジェクト内に格納され、再生開始されます。

しかしこの時点では、下のウィンドウには最初のフレームしか表示されず、でも音は流れ始めます。

格納されたムービーの画像を絶えず再生するには、「metro 1」とその上のバッテンで、「jit.qt.movie」オブジェクトに絶えず「bang」メッセージを送り続ける必要があるのです。

馬に対してムチを叩くイメージですね。

で、馬にムチを叩く間隔を決めるのが、「metro」のこれまたアーギュメント、引数部分です。 ここでは「metro 1」と入力してますが、正直速すぎます。

「metro 40」で1秒に25回、40ミリ秒の間隔で信号(bang)を送っているので、24フレームの動画であれば「metro 40」で十分。

f:id:otoyasumi:20131227220848j:plain

 さて、長くなっちゃったけど、勘のいい人ならお分かりかと思いますが、「read」の隣、「start」「stop」で、動画の再生・停止をコントロールします。

そして一番右の「rate」では、動画の再生速度をコントロールしています。アーギュメントの「$1」は、「rate」メッセージの値を、上のnumberボックスで設定しています。

ここに「4」と入れると4倍速、「1」で等倍再生、って感じです。 

 

実際にパッチを実行して動画再生してみたものを画面キャプチャしてみました。再生させてる動画は、うまい素材がなかったので高校生の頃のライブコンテスト動画です。

 

さて次回は、webカメラから取得した映像をごにょごにょしたいと思います。

 

#001 Max/MSP/Jitterで動画プレーヤを作る from Kijima Masashi on Vimeo.

参考記事:

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