我有一個相機應用程序,我試圖限制捕獲長度爲,正好是 15秒。NSTimer給出不準確的結果
我嘗試了兩種不同的方法,他們都不滿意我的工作。
第一種方法是火一個重複的計時器每秒:
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countTime:) userInfo:[NSDate date] repeats:YES];
- (void)countTime:(NSTimer*)sender {
NSDate *start = sender.userInfo;
NSTimeInterval duration = [[NSDate date] timeIntervalSinceDate:start];
NSInteger time = round(duration);
if (time > 15) {
[self capture:nil]; // this stops capture
}
}
這給了我15秒的視頻8/10倍,具有周期性16秒一個...我已經嘗試了混合的NSTimeInterval雙鍵和圓形整數這裏,沒有明顯的差別...
的第二種方法是所希望的持續時間之後啓動一次選擇,像這樣:
self.timer = [NSTimer scheduledTimerWithTimeInterval:15.0f target:self selector:@selector(capture:) userInfo:nil repeats:NO];
這只是直接調用捕獲方法 - 即停止相機捕獲 - 並給出了相同的結果...
有沒有什麼,我在這裏忽略?現在,因爲我已經測試了一些經過調整的浮點值作爲上限(14.5,15.0,15.1,15.5,16.0等),而且幾乎總是在幾次嘗試後看到一個16秒的視頻,我我開始懷疑它是否只是AVFoundation需要第二次沖洗緩衝區...?
不確定什麼*是*正確的,但它不是'NSTimer':http:// stackoverflow。com/questions/11835023/nstimer-accuracy – Linuxios
您可能只需將視頻裁剪爲15秒後的字詞,並保持簡單的NSTimer。 – Linuxios
@Linuxios是的,這可能是正確的選擇.... –