所以,我已經確定你不能在Handbrake上討論過他們的IRC頻道。
然而,這裏與ffmpeg的做這件事的是一個相對簡單:
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
outputPipe = [NSPipe pipe];
taskOutput = [outputPipe fileHandleForReading];
current_task = [[NSTask alloc] init];
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *stillName = [NSString stringWithFormat:@"%@_still%d.png", [MY_FILE substringToIndex:([draggedFile length]-4)], MY_STILL_NUMBER];
[current_task setLaunchPath: [NSString stringWithFormat:@"%@/ffmpeg", resourcePath]];
// save just frame at current time
// by leaving -ss before the -i, we enable direct indexing within ffmpeg, which saves a still in about a second, rather than a minute or so on a long video file
NSArray *arguments = [NSArray arrayWithObjects:@"-ss", currentFrameTime, @"-i", draggedFile, @"-vframes", @"1", @"-f", @"image2", stillName, nil];
[current_task setArguments:arguments];
[current_task setStandardInput:[NSPipe pipe]];
[current_task setStandardOutput:outputPipe];
[current_task setStandardError:outputPipe];
[defaultCenter addObserver:self selector:@selector(saveTaskCompleted:) name:NSTaskDidTerminateNotification object:current_task];
[current_task launch];
[taskOutput readInBackgroundAndNotify];
所以,我使用手剎任務(轉換視頻),然後另一個任務保存靜態。 我只能使用ffmpeg,但我喜歡Handbrake,所以我會利用這2種方法。
希望這可以幫助那裏的任何人。
不知道你有什麼我問的嗎?我說我可以用ffmpeg來做,但是想用Handbrake(因爲我已經在使用視頻轉換)或QTKit來找到一種方法。有任何想法嗎? :) – Andre