酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

動画データ解析ツールを作成する(5) - QuickTime SDKを使って動画ファイルのDimensionを取得する

今まで紹介したQuickTime APIを使用して、動画ファイルのDimension(Videoの表示サイズ)を取得するためのサンプルコードは、下記のとおりになります。

出来る限りエラー処理を省いて、短く書いたつもりなのですが長くなってしまった・・・

|c|

include <stdio.h>

include <QTML.h>

include <Movies.h>

int main(void) { //! QuickTime Media Layerの初期化 if (InitializeQTML(0L) != 0) return 1;

//! Movie Toolboxの初期化 if (EnterMovies() != 0) return 1;

//! WindowsネイティブパスをFSSpecへ変換 FSSpec fsspec; NativePathNameToFSSpec("c:\060604_1600~01.3G2", &fsspec, 0L);

//! 動画ファイルを開く short refNum; OpenMovieFile(&fsspec, &refNum, fsRdPerm);

//! Movie作業領域を確保 Movie theMovie; short movieRefId; NewMovieFromFile(&theMovie, refNum, &movieRefId, 0, newMovieActive, 0); if(theMovie != 0) {

//! Movieのトラック数を取得
int trackNum = GetMovieTrackCount(theMovie);

//! ビデオトラックを取得
Track videoTrack;
for(int i=0; i<=trackNum; i++) {
    videoTrack = GetMovieIndTrackType(theMovie, i, VideoMediaType, movieTrackMediaType);
    if(videoTrack) break;
}

//! 表示サイズを取得
Fixed width,height;
GetTrackDimensions(videoTrack, &width, &height);

printf("width:%d height:%d\n", FixRound(width), FixRound(height));

//! Movie作業領域を解放
DisposeMovie(theMovie);

}

//! 動画ファイルを閉じる CloseMovieFile(refNum);

//! Movie Toolboxの終了処理 ExitMovies();

//! QuickTime Media Layerの終了処理 TerminateQTML();

return 0; } ||<

  • 関連記事

QuickTime SDKについての情報はとても少なくて苦労しています。僕が書いたQuickTime SDKを使って動画データを解析する方法については以下の通りまとめております。もしよければご参照ください。