2012-04-26 74 views
0

我有一個QuickTime .mov(H.264)視頻文件 - 如果我使用QuickTime Player 10打開並使用Movie Inspector進行檢查,則可以看到預分頻大小爲1440x1080,顯示器尺寸爲1920x1080。使用QTKit獲取變形視頻的預分頻大小

我用QTKit和以下屬性打開視頻:QTMovieOpenAsyncOKAttribute,QTMovieIsActiveAttribute,QTMovieResolveDataRefsAttribute,QTMovieDontInteractWithUserAttribute

QTMovieCurrentSizeAttributeQTMovieNaturalSizeAttribute都給出1920x1080。

如果我用QuickTime 7打開電影,我可以使用GetMovieBox()查找大小爲1920x1080,可以在1440x1080訪問幀。我如何使用QTKit獲得1440x1080分辨率信息?

我已經嘗試過在這個問題中使用仿射變換:QTMovieCurrentSizeAttribute and QTMovieSizeDidChangeNotification replacements,但它給了身份變換。

回答

0

您需要獲取實際視頻軌道的尺寸,而不是電影。

QTTrack* videoTrack = nil; 

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

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

通常沒有必要做,因爲和視頻通道的尺寸QTMovieNaturalSizeAttribute是相等的。但是,使用變形視頻電影的自然尺寸屬性告訴我們應如何顯示視頻,此時軌道尺寸代表實際視頻幀(較小)的尺寸。

QTMovieCurrentSizeAttribute是奇數加棄用,它根本與數據無關。

+0

我剛試過這個,它給了我顯示器的大小,而不是視頻幀的實際尺寸。 – koan 2012-05-17 08:52:55