我在使用时遇到了令人沮丧的砖墙:
projectItem.setInPoint(seconds)
projectItem.setOutPoint(seconds)
…大约 50% 的时间 I/O 点(在源窗口中)设置为 1 帧错误(有时 2 帧输出)。我觉得我已经尝试了一切来发现模式是什么,但它似乎完全是随机的。
我认为这可能与丢帧、可变帧速率、剪辑与序列不同或其他怪异有关,但错误发生在简单的恒定帧速率(如 25 fps)下。错误似乎没有押韵或原因(尽管在某些帧上始终出现相同的错误)。
子剪辑还有一个更大的问题,因为脚本环境认为所有子剪辑都从第 0 帧开始。
我已经尝试了所有方法,包括在滴答声、秒数或帧中工作,以及在它们之间进行转换。没有任何改变。
我想要完成的是在一组剪辑上设置输入/输出,运行脚本以从这些源剪辑中进行较小的剪辑,然后将剪辑恢复到原始 I/O 点。大部分工作都完成了,除了我无法通过这个错误将所有剪辑恢复到原始 I/O 点。
下面是我写的一个测试脚本。它获取当前的 I/O 位置,存储它们,然后将它们设置回相同的剪辑。一半的时间值不一样!啊!这使得无法准确设置剪辑 I/O。
function framesToSeconds (frames, fps)
{
return frames / fps;
}
function secondsToFrames (sec, fps)
{
return sec * fps;
}
/*---------------------------------------------------*/
var projItems = app.project.rootItem.children;
var clip = projItems[2];
var fps = clip.getFootageInterpretation().frameRate;
var setIn = clip.getInPoint().seconds;
var setOut = clip.getOutPoint().seconds;
var inFrame = secondsToFrames (setIn, fps);
var outFrame = secondsToFrames (setOut, fps);
var secIn = framesToSeconds (inFrame, fps);
var secOut = framesToSeconds (outFrame, fps);
clip.setInPoint( secIn );
clip.setOutPoint( secOut );
var setIn = clip.getInPoint().seconds;
var setOut = clip.getOutPoint().seconds;