使用QTKit获取变形视频的预分频大小

时间:2012-04-26 09:56:27

标签: quicktime qtkit

我有一个QuickTime .mov(H.264)视频文件 - 如果我用QuickTime Player 10打开并查看Movie Inspector,我可以看到预分频尺寸是1440x1080,显示尺寸是1920x1080。

我使用QTKit和以下属性打开视频:QTMovieOpenAsyncOKAttributeQTMovieIsActiveAttributeQTMovieResolveDataRefsAttributeQTMovieDontInteractWithUserAttribute

QTMovieCurrentSizeAttributeQTMovieNaturalSizeAttribute都给出了1920x1080。

如果我用QuickTime 7打开电影,我可以使用GetMovieBox()来查找大小为1920x1080,帧可以在1440x1080访问。如何使用QTKit获取1440x1080分辨率信息?

我已经尝试过使用此问题中给出的仿射变换:QTMovieCurrentSizeAttribute and QTMovieSizeDidChangeNotification replacements但它给出了一个身份变换。

1 个答案:

答案 0 :(得分: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是奇怪的添加弃用,它根本与数据无关。