QTKit Captureを使ってみる - その2 [プログラミング - QTKit Capture]
昨日中途半端な格好で終わってしまったムービー入力のためのFramework、QTKit Captureを使ってみる話。あまりに簡単なのでひょっとしてメモを作る必要もないか、と思ってしまう。
最低限必要なQTKit Captureのクラス
QTKit Captureを使う上で最低限必要なクラスがある。中心的なクラスは
- QTCaptureSession
- QTCaptureInput
- QTCaptureOutput
他にもっとも簡単な入力動画のプレビューのために
- QTCatpureView
同様に
- QTCaptureAudioPreviewOutput
- QTCaptureConnection
ガイドにはこんな図があって、
大まかなクラスの位置づけが示されている。- 入力デバイスは、具体的な個々のデバイスを表すQTCaptureDeviceクラスのインスタンスとして表される。
- 入力デバイスからのデータはQTCaptureDeviceに繋がったQTCaptureDeviceInputからQTCaptureConnectionを経由してQTCaptureSessionに渡される。
- QTCaptureSessionの内部でデータの同期が取られて逆向きに繋がったQTCaptureOutputに渡される。
- QTCaptureOutputには具体的なデバイス(プレビューあるいはファイル)が繋がっていてフォーマットの変換などが行われてデータが渡される。
ただし、やはり生のSequenceGrabberを呼ぶのに比べるとオーバーヘッドは大きいようで、PowerBook G4ではプレビューでフレーム落ちが出るなどという問題が起こってしまう。
その他のクラス
QTCaptureInputとQTCaptureOutputを親クラスとする、個々のデバイスに即したデータの入出力ができるようにしたクラスがいくつかある。
入力用のサブクラスとして
- QTCaptureDeviceInput
- QTCaptureVideoPreviewOutput
- QTCaptureAudioPreviewOutput
- QTCaptureMovieFileOutput
- QTCaptureDecompressedVideoOutput
- QTCaptureDevice
- 実際にMacに繋がっているカメラなどを探して
- それに対応するQTCaptureDeviceのインスタンスを作って
- QTCaptureDeviceInputに教えてやる
ガイドにはこれらのQTKitCaptureに属するクラス全体をグループに分類して
グループ | クラスの例 |
Base | QTCaptureSession、QTCaptureInput、 |
QTCaptureOutput、QTCaptureConnection | |
Input/Output | QTCaptureDeviceInput、QTCaptureVideoPreviewOutputなど |
Utility | QTCompressionOptions、QTSampleBufferなど |
Device Access and UI | QTCaptureDevice、QTCaptureView |
こんな説明でわかった気になるわけはないので、実際の処理の流れとコードを次回示すことにする。ああ、喉が痛い。
2008-08-21 23:39
nice!(0)
コメント(0)
トラックバック(0)
コメント 0