0

我有一个 QuickTime .mov (H.264) 的视频文件 - 如果我使用 QuickTime Player 10 打开并使用 Movie Inspector 检查,我可以看到预缩放大小为 1440x1080,显示大小为 1920x1080。

我使用 QTKit 和以下属性打开视频:QTMovieOpenAsyncOKAttribute, QTMovieIsActiveAttribute, QTMovieResolveDataRefsAttribute, QTMovieDontInteractWithUserAttribute.

两者都QTMovieCurrentSizeAttribute提供QTMovieNaturalSizeAttribute1920x1080。

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

我已经尝试使用这个问题中给出的仿射变换:QTMovieCurrentSizeAttribute 和 QTMovieSizeDidChangeNotification 替换,但它给出了一个身份变换。

4

1 回答 1

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不推荐使用奇怪的添加,它根本与数据无关。

于 2012-05-16T23:59:44.367 回答