2012-04-26 2 views
0

QuickTime .mov (H.264) 인 비디오 파일이 있습니다. QuickTime Player 10으로 열어 Movie Inspector에서 확인하면 프리 스케일 된 크기가 1440x1080이고 디스플레이 크기는 1920x1080입니다. QTMovieOpenAsyncOKAttribute, QTMovieIsActiveAttribute, QTMovieResolveDataRefsAttribute, QTMovieDontInteractWithUserAttribute :QTKit을 사용하여 아나모픽 비디오의 프리 스케일 크기 가져 오기

나는 QTKit이 다음과 같은 속성을 가진 비디오를 엽니 다.

QTMovieCurrentSizeAttributeQTMovieNaturalSizeAttribute은 모두 1920x1080입니다.

QuickTime 7로 동영상을 열면 GetMovieBox()를 사용하여 크기가 1920x1080이고 프레임이 1440x1080에서 액세스 할 수 있습니다. QTKit을 사용하여 1440x1080 해상도 정보를 얻으려면 어떻게해야합니까?

이 질문에 주어진 것처럼 affine 변환을 사용하여 이미 시도했지만 QTMovieCurrentSizeAttribute and QTMovieSizeDidChangeNotification replacements이지만 ID 변환이있었습니다.

답변

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