- 2008-05-22 (木)
- library/pixels
注)本家の解説の適当な訳です。
Description
Nodebox QuicktimeライブラリはNodeBoxへムービー(と音声)サポートを追加する。
ムービーから画像イメージフレームを掴むことに利用でき、それをNodeboxで表示したり、Core Imageで扱ったりできる。
さらに、このライブラリはNodeBoxでの音声の再生に利用出来、オーディオセクションを作ったり、スクリプトから音量やレートをコントロール出来る。
Documentation
How to get the library up and running
ダウンロードしたquicktimeフォルダを~/Library/Application Support/NodeBox/ もしくは(あなたのスクリプトと同じように)Nodeboxがライブラリを探せるように同じフォルダ内に入れる。
それであなたのスクリプトへライブラリがimportされる。
quicktime = ximport("quicktime")
Movie frames
Quicktime ライブラリはmovie()コマンドをもっている。
これは、与えられたロケーションからムービーを開く。
QuickTimeアプリケーションから通常開くことの出来るムービーならばどのようなtypeでも開くことが可能である。
movie(path)
コマンドはいくつかの有用なプロパティーと共にMovie objectを返す。
- movie.path:ソースのパス
- movie.duration:ムービーの長さ(秒)
- movie.has_video:ムービーがビデオトラックを持っていればTrue
- movie.has_audio:ムービーがオーディオトラックを持っていればTrue
- movie.width:ムービーの幅(ピクセル)
- movie.height:ムービーの高さ(ピクセル)
返されたmovie objectはイメージフレームを掴む為の二つのmethodを持つ。
movie.frame(time)
movie.frames(n=10, start=0, stop=None)
frame()メソッドは与えられた時間(秒)でのムービー内の画像データのMovieFrame objectを返す。
frames()メソッドは与えられた開始、終了時間(秒)の間のMovieFrame objectとリストを返す。
start stopパラメータはオプションである。
movie frame objectは次のプロパティーを持つ。
- frame.data:イメージデータをimage()コマンドへ渡すことが出来る。
- frame.time:frameがムービーのどこにあるかの時間。
- frame.src:このframeが属するムービーのソースパス
- frame.width
- frame.height
NodeBoxへフレームを表示するのは、本当にとても簡単です。
次のスクリプトは全てのフレームをアニメーションでループします。
movie = quicktime.movie("twisted_world.mp4")
size(movie.width, movie.height)
speed(50)
def draw():
frame = movie.frame(FRAME*0.1)
image(None, 0, 0, data=frame.data, width=frame.width)
Movie frames in Core Image
Quicktime ライブラリと、Core Imageライブラリは、本当に一緒によく使う。
movie.frame()もしくはmovie.frames()リストから得られたMovieFrame object はCore Imageで、canvas.layer()オブジェクトを通すことが出来る。
それによって、あなたは色々なフィルターやエフェクトを使うことが出来る。
coreimage = ximport("coreimage")
quicktime = ximport("quicktime")
movie = quicktime.movie("twisted_world.mp4")
frame = movie.frame(1.0)
canvas = coreimage.canvas(movie.width, movie.height)
l = canvas.layer(frame)
l.filter_zoomblur()
canvas.draw()
Audio playback
Quicktime ライブラリはaudio()コマンドをもっている。
これは与えられたロケーションから音声ファイルを開くことが出来る。
QuickTimeアプリケーションから通常開くことの出来る音声ファイルならばどのようなtypeでも開くことが可能である。
audio(path)
このコマンドはいくつかの有用なプロパティーと共にAudio objectを返す。
- audio.path:ソースパス
- audio.duration:音声ファイルの長さ(秒)
- audio.has_video: ビデオトラックがあればTrue
- audo.has_audio: 音声ファイルがあればTrue
- audio.volume:音声再生時の音量(0.0から2.0)
- audio.time: 音声ファイルの現在の再生時間(秒)
- audio.rate: オーディオの再生レートもしくはスピード(0.25から5.0)
- audio.paused: オーディオがポーズされる(停止ではなくて)とTrue
返されたaudio objectは再生をコントロールするいくつかのメソッドを持つ。
audio.play()
audio.stop()
audio.pause()
audio.is_playing()
audio.reset()
audio.is_playing() methodはNodeBoxで音声が再生中な限り、Trueを返す。
再生中の音声はvolumeとrateを調節出来る。
それはtimeプロパティーで再生し始めるであろう。
audio.reset()メソッドはvolumeと、timeと、rateをデフォルトに戻す。(それぞれ0,0,1)
このライブラリはNodeBoxから音声を書き出しする機能は無い。
Copying and pasting selections
時々、ムービー全体の代りに、ムービーの選択部分で動作させたいとか、一秒のサンプルをループさせたいとか思うかもしれない。
movieとaudioどちらのオブジェクトもselection()メソッドを持つ。
media.selection(start=0, stop=None)
与えられたstart stop time間の新しいmovieもしくはaudioオブジェクトを返す。
例えば、これは音声の断片からショートループを作る方法である。
audio = quicktime.audio("modron_cube.mp3")
audio = audio.selection(start=0, stop=7.2)
speed(100)
def draw():
if not audio.is_playing:
audio.play()
- Newer: TUIO ≫
- Older: