我有一个QuickTime .mov(H.264)视频文件 - 如果我用QuickTime Player 10打开并查看Movie Inspector,我可以看到预分频尺寸是1440x1080,显示尺寸是1920x1080。
我使用QTKit和以下属性打开视频:QTMovieOpenAsyncOKAttribute
,QTMovieIsActiveAttribute
,QTMovieResolveDataRefsAttribute
,QTMovieDontInteractWithUserAttribute
。
QTMovieCurrentSizeAttribute
和QTMovieNaturalSizeAttribute
都给出了1920x1080。
如果我用QuickTime 7打开电影,我可以使用GetMovieBox()来查找大小为1920x1080,帧可以在1440x1080访问。如何使用QTKit获取1440x1080分辨率信息?
我已经尝试过使用此问题中给出的仿射变换:QTMovieCurrentSizeAttribute and QTMovieSizeDidChangeNotification replacements但它给出了一个身份变换。
答案 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
是奇怪的添加弃用,它根本与数据无关。