我需要确定一部电影是丢帧还是非丢帧。
我试图在其中一个 xcode 视频框架(QTMovie 或来自 AVFoundation 的东西)中的视频文件的属性中找到它。运气不太好。
我这样做是为了在 FCP-X XML 文件中填写必要的信息。
有人对这个有经验么?
重要说明,我在 64 位环境中工作,并且必须留在那里。
我需要确定一部电影是丢帧还是非丢帧。
我试图在其中一个 xcode 视频框架(QTMovie 或来自 AVFoundation 的东西)中的视频文件的属性中找到它。运气不太好。
我这样做是为了在 FCP-X XML 文件中填写必要的信息。
有人对这个有经验么?
重要说明,我在 64 位环境中工作,并且必须留在那里。
您可以使用CMTimeCodeFormatDescriptionGetTimeCodeFlags()
获取给定时间码格式描述参考的时间码标志。您可以通过询问AVAssetTrack
其formatDescriptions
.
我认为它看起来像这样:
BOOL isDropFrame (AVAssetTrack* track)
{
BOOL result = NO;
NSArray* descriptions = [track formatDescriptions];
NSEnumerator* descriptionEnum = [descriptions objectEnumerator];
CMFormatDescriptionRef nextDescription;
while ((!result) && ((nextDescription = (CMFormatDescriptionRef)[descriptionEnum nextObject]) != nil))
{
if (CMFormatDescriptionGetMediaType(nextDescription) == kCMMediaType_TimeCode)
{
uint32_t timeCodeFlags = CMTimeCodeFormatDescriptionGetTimeCodeFlags ((CMTimeCodeFormatDescriptionRef)nextDescription);
result = ((timeCodeFlags & kCMTimeCodeFlag_DropFrame) != 0);
}
}
return result;
}