Я пытаюсь создать приложение для Mac, которое будет создавать потоковое видео в реальном времени. Я знаю про VLC и другие решения, но все же.
С этой целью я пытаюсь записывать видео с iSight с помощью QTKit и постоянно сохранять его как серию крошечных видеофайлов. Однако запись получается не совсем непрерывной, с промежутками между файлами.
По сути, я просто устанавливаю таймер, который через определенные промежутки времени начинает запись в новый файл, тем самым останавливая старую запись. Я также попытался установить максимальную записываемую длину и использовать метод делегата ... didFinishRecording ... и ... willFinishRecording ..., но с тем же результатом (я не могу точно оценить разницу между пробелами в этих случаях ).
Пожалуйста, помогите мне, если вы знаете, как это делать.
Вот мой текущий код:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
QTCaptureSession *session = [[QTCaptureSession alloc] init];
QTCaptureDevice *iSight = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo];
[iSight open:nil];
QTCaptureDeviceInput *myInput = [QTCaptureDeviceInput deviceInputWithDevice:iSight];
output = [[QTCaptureMovieFileOutput alloc] init] ; //ivar, QTCaptureFileOutput
[output setDelegate:self];
a = 0; //ivar, int
fileName = @"/Users/dtv/filerecording_"; //ivar, NSString
[session addOutput:output error:nil];
[session addInput:myInput error:nil];
[capview setCaptureSession:session]; //IBOutlet
[session startRunning];
[output setCompressionOptions:[QTCompressionOptions compressionOptionsWithIdentifier:@"QTCompressionOptionsSD480SizeH264Video"] forConnection:[[output connections] objectAtIndex:0]];
[output recordToOutputFileURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%i.mov", fileName, a]] bufferDestination:QTCaptureFileOutputBufferDestinationOldFile];
NSTimer *tmr = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(getMovieLength:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:tmr forMode:NSDefaultRunLoopMode];
}
‐ (void) getMovieLength:(NSTimer *) t { a++; [output recordToOutputFileURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%i.mov", fileName, a]] bufferDestination:QTCaptureFileOutputBufferDestinationOldFile]; }