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



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

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

QTMovieCurrentSizeAttributeQTMovieNaturalSizeAttribute都给出 1920x1080。

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

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

您需要获取实际视频轨道的尺寸,而不是电影的尺寸。

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弃用奇数添加,它与数据完全无关。

相关内容

  • 没有找到相关文章

最新更新