2013-04-24 70 views
0

我可能花了最近2周搜索Apple Quicktime文档来解决看起来像一个非常基本的问题,但无济于事。这里的问题...查看QTMovie持续时间属性?

我有几个简短的QTMovie文件,每个文件包含三个轨道 - 通常两个包含声音和视频,再加上一个额外的视频轨道持有字幕文本图像(一共制作两个视频轨道) 。如果我在Quicktime Pro中选择这些曲目中的一个并将其导出为“电影到图像序列”,我可能会发现,在电影的整个播放过程中都会传播142个静止图像。我的搜索方法也会报告正确的帧数。

现在,我已经了解到,只要使用'attributeForKey:QTMovieDurationAttribute',您就可以拍摄单幅图像,将它们添加到QTMovie,并设置它们各自的屏幕显示时间。但我怎么去访问那个数据呢? (这基本上就像是这个过程的反面)。

在伪码什么,我试图做的是一样的东西:

{ 
select video track #2 ... 
call up the first image in the sequence ... 
access and note its on-screen duration setting ... 
call up the second image ... 
access and note its duration ... 
... repeat until done. 

}

我没有编辑这个数据或任何后 - 只要找出我如何能得到访问视频轨道中的单个帧......并且其中的这个时间信息隐藏在QT的肠内。

作为一名老年公民,我认为我已经开始为这类事情而老去,而且Quicktime是一个很大,往往很复杂和混乱的框架,所以如果任何人都可以用一些建议或(理想情况下)帮助我这里有几行示例代码,我真的很感激它。在此先感谢:-)

回答

0

好的。经过几天的挖掘和实验,我终于找到了自己的问题的答案。为了得到我所用的(下一)字幕图像:

// access the subtitle track 
Track theTrack = [self getVideoSubtitleTrack]; 

// set flags to find NEXT image (ignoring the current one)... 
myFlags = nextTimeStep; 
// ... and search forward from current position. 
GetTrackNextInterestingTime(theTrack, myFlags, playheadPos, fixed1, &nextInterestingTime, NULL); 

这仅发现了一个图像对象的开始,虽然,通过跟踪迭代找到的每个连续图像的领先优势。但我也想要当前文本的结束时间。

获得开始时间后,我试验了七个可用的标志,发现将标志设置为'nextTimeTrackEdit'会得到结束时间。