【问题标题】:Need to get the duration of Quicktimes in Frames with varying framerates需要在不同帧速率的帧中获取 Quicktimes 的持续时间
【发布时间】:2011-08-02 01:04:11
【问题描述】:
我需要访问 Quicktime 文件的总帧数(希望还有帧率)。我一直发现很难获得这些信息,甚至是我可以形成帧数的信息。
我一直在尝试几种不同的方法,但没有真正成功。
Quicktime Player 可以访问所有这些极好的元数据和文件信息,但我什么也没得到,这似乎很奇怪!
所以,重申一下,有没有人知道如何访问总帧持续时间,以及可能像 Quicktime Player 那样访问当前播放位置的帧数?
【问题讨论】:
标签:
objective-c
macos
xcode4
desktop-application
【解决方案1】:
我想通了!
只是想分享我的发现,因为我很难找到这方面的任何信息。
这将读取 Quicktime 电影,将其拆分为可用的轨道(视频、音频、tc),然后找到视频轨道。然后返回 NSLog 中的总帧数和帧率。
QTMovie *movieFile = [QTMovie movieWithFile:moviePath error:NULL];
NSArray *allTracks = [movieFile tracks];
for(QTTrack *track in allTracks)
{
QTMedia *media = [track media];
// Checks to make sure the quicktime media being inputted has a video track.
if([[media attributeForKey:QTMediaTypeAttribute] isEqualToString:QTMediaTypeVideo])
{
NSNumber *samples = [media attributeForKey:QTMediaSampleCountAttribute];
NSLog(@"Total Frames: %ld", (NSInteger)[samples integerValue]);
NSLog(@"Frame Rate: %@", [track attributeForKey:QTTrackTimeScaleAttribute]);
}
}