gpt4 book ai didi

objective-c - 使用 QTMovie 确定流的实际帧速率

转载 作者:搜寻专家 更新时间:2023-10-30 20:11:38 28 4
gpt4 key购买 nike

我正在使用带有 QTMovieOpenForPlaybackAttribute:YES 的 QTMovie,并使用 QTMovieView 来显示它。我需要计算它达到的帧速率。

我能想到的一种方法是在每次帧即将显示或准备好显示时调用回调 - 有人熟悉这种回调吗?

另一种方法是使用一个定时器,它使用 -currentFrameImage 并将它与它测试的最后一帧图像进行比较——但是首先我不知道你将如何比较两个 NSImage,其次我想这将是如果两个连续的帧相同,就会有问题,它会有效地假设一个帧在不相同的情况下被丢弃了

我能想到的最后一种方法是再次使用计时器,这次调用 -currentTime。我试过这个,但是,出于某种原因,timeScale 设置为 1000000000。我 read that the time scale is supposed to be 100*fps ,那么,为什么 currentTime 返回 FPS 是 10000000?这似乎完全不正确。返回的 QTTime 中没有设置标志。

我到处都在搜索这方面的信息 - 任何与帧速率有关的搜索只会让我知道如何在捕获时设置帧速率,这不是我想要的。

最佳答案

试试这个:

- (double)frameRate
{
double result = 0;

for (QTTrack* track in [_movie tracks])
{
QTMedia* trackMedia = [track media];

if ([trackMedia hasCharacteristic:QTMediaCharacteristicHasVideoFrameRate])
{
QTTime mediaDuration = [(NSValue*)[trackMedia attributeForKey:QTMediaDurationAttribute] QTTimeValue];
long long mediaDurationScaleValue = mediaDuration.timeScale;
long mediaDurationTimeValue = mediaDuration.timeValue;
long mediaSampleCount = [(NSNumber*)[trackMedia attributeForKey:QTMediaSampleCountAttribute] longValue];
result = (double)mediaSampleCount * ((double)mediaDurationScaleValue / (double)mediaDurationTimeValue);
break;
}
}
return result;
}

关于objective-c - 使用 QTMovie 确定流的实际帧速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6695602/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com