2012-04-26 5 views
0

ビデオファイルがQuickTime .mov(H.264)です - QuickTime Player 10で開いてムービーインスペクタで確認すると、プリスケールされたサイズは1440x1080表示サイズは1920x1080です。 QTMovieOpenAsyncOKAttributeQTMovieIsActiveAttributeQTMovieResolveDataRefsAttributeQTMovieDontInteractWithUserAttributeQTKitを使用してアナモルフィックビデオのプリスケールサイズを取得する

は私がQTKitもお使いいただけて、次の属性を持つ映像を開きます。

QTMovieCurrentSizeAttributeQTMovieNaturalSizeAttributeの両方が1920x1080です。

QuickTime 7でムービーを開くと、GetMovieBox()を使用してサイズが1920x1080で、フレームが1440x1080でアクセスできることがわかります。 QTKitを使用して1440x1080の解像度情報を取得するにはどうすればよいですか?

私はすでにこの質問に与えられているようにアフィン変換を使ってみました:QTMovieCurrentSizeAttribute and QTMovieSizeDidChangeNotification replacementsしかし、それは恒等変換を与えました。

答えて

0

ムービーではなく、実際のビデオトラックの寸法を取得する必要があります。ビデオトラックの寸法とQTMovieNaturalSizeAttributeが等しいので

QTTrack* videoTrack = nil; 

for (QTTrack* track in [movie tracks]) 
{ 
    if ([track attributeForKey:QTTrackMediaTypeAttribute] == QTMediaTypeVideo) 
    { 
     videoTrack = track; 
     break; 
    } 
} 

NSSize dimensions = [(NSValue*)[videoTrack attributeForKey:QTTrackDimensionsAttribute] sizeValue]; 

は通常、それを行うための必要はありません。しかし、アナモルフィックビデオムービーナチュラルサイズアトリビュートを使用すると、トラックのサイズが実際のビデオフレームのサイズ(より小さい)を表すときに、ビデオをどのように表示するべきかがわかります。

QTMovieCurrentSizeAttributeは奇数ですが、これはデータにはまったく関係ありません。

+0

これを試したところ、ビデオフレームの実際のサイズではなく、表示サイズがわかりました。 – koan

関連する問題