動画・音声などの情報取得
動画や音声ファイルの再生時間やファイルサイズなどをCocoa経由で取得します。
QuickTime API使用
まず NSMovie
を生成しQuickTimeのオブジェクトに変換。
NSMovie* movie = [[NSMovie alloc] initWithURL:url byReference:NO]; Movie qtmov = [movie QTMovie];
再生時間の取得。
TimeValue duration = GetMovieDuration(qtmov); // unit数の取得 TimeScale timeScale = GetMovieTimeScale(qtmov); // 秒/unit の取得 int sec = duration / timeScale; // 秒の計算
ファイルサイズの取得。
long size = GetMovieDataSize(qtmov, 0, // 開始 duration); // 長さ
動画の縦横サイズ取得。
Rect rect; GetMovieBox(qtmove, &rect); int width = rect.right - rect.left; // 幅 int height = rect.bottom - rect.top; // 高さ
QTKit 使用 (要QuickTime7)
QuickTime7から登場したQTKitは従来のQuickTime APIを使わなくてもCocoaからかなりのことができてしまうという便利フレームワークです。Appleのクラス仕様の冒頭には「Tigerでしかダメ」みたいなことが書かれていますが、PantherでもQuickTime7が入っていれば大丈夫です。
まず、生成。
QTMovie* movie = [[QTMovie alloc] initWithURL:url error:nil];
再生時間の取得。
QTTime time = [movie duration]; int duration = time.timeValue / time.timeScale; // 秒への変換
ファイルサイズの取得。
NSNumber* num = [movie attributeForKey:QTMovieDataSizeAttribute]; // 属性取得 long long fileSize = [num longLongValue];
動画の縦横サイズ取得。
NSValue* sizeVal = [movie attributeForKey:QTMovieNaturalSizeAttribute]; // 属性取得 NSSize size = [sizeVal sizeValue];
こうやってみるとQTKitはほんと便利だなあ〜と思うわけです。