0

在过去的两周里,我可能一直在搜索 Apple Quicktime 文档,以解决看似非常基本的问题,但无济于事。这里的问题...

我有几个简短的 QTMovie 文件,每个文件都包含三个轨道——通常两个包含声音和视频,加上一个额外的视频轨道,其中包含字幕文本图像(总共制作两个视频轨道)。如果我在 Quicktime Pro 中选择其中一个轨道并将其导出为“电影到图像序列”,我可能会发现,142 个静止图像分布在整个电影期间。我的搜索方法还报告了正确的总帧数。

现在,我了解到您可以拍摄单帧图像,将它们添加到 QTMovie 中,并使用“attributeForKey:QTMovieDurationAttribute”设置它们各自的屏幕显示时间,无论您想要多长时间。但是我到底要如何再次访问这些数据呢?(本质上似乎与此过程相反)。

在伪代码中,我想做的是:

{
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.

}

我不是在编辑这些数据或任何东西之后——只是想知道如何访问视频轨道中的各个帧……以及HECK这个时间信息隐藏在 QT 内部的什么地方。

作为一名老年人,我认为我对这类事情开始变得太老了,而 Quicktime 是一个庞大的、通常复杂且令人困惑的框架,所以如果有人可以帮助我提供一些建议或(理想情况下)只需几行这里的示例代码我真的很感激。提前致谢 :-)

4

1 回答 1

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”可以获得结束时间。

于 2013-04-27T23:51:19.940 回答