iOS视频录制

时间:2015-01-20 15:51:01

标签: ios video recording chunks

是否可以在连续录制时剪辑视频文件?我正在寻找的是说我录制视频,我想每隔5秒将视频片段发送到服务器,直到录制停止。例如,录制视频文件10秒钟。我想发送2个视频文件,每个持续5秒。第一个文件在视频连续发送,以便在接下来的5秒内录制。

2 个答案:

答案 0 :(得分:2)

看一下本教程:

http://www.ios-developer.net/iphone-ipad-programmer/development/camera/record-video-with-avcapturesession-2

您可以设置预览显示(如果需要)。 您设置了录制/停止按钮。 当用户按下开始录制时,使用

[MovieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];

并且每隔X秒执行一次:

[MovieFileOutput stopRecording];
// setting up the url ...
[MovieFileOutput startRecordingToOutputFileURL:nextOutputURL recordingDelegate:self];

瞧!你有很多X秒文件,你可以随心所欲地做任何事情。

预览显示不会显示某种停止,与记录按钮相同。

答案 1 :(得分:1)

这是以5秒剪辑录制视频的正确方法。

按下录制按钮,您开始将第一个视频片段录制到URL。

[MovieFileOutput startRecordingToOutputFileURL:outputURL recordingDelegate:self];

按下录制按钮时设置5秒计时器。

[NSTimer scheduledTimerWithTimeInterval:5.0f target:self selector:@selector(stopRecording) userInfo:nil repeats:YES];

-(void)stopRecording
{
    [MovieFileOutput stopRecording];
}

这是您要开始录制下一个视频片段的位置。在第一个剪辑停止后立即调用此方法。

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error
{
    NSLog(@"end record");
    [MovieFileOutput startRecordingToOutputFileURL:[self getNextURL] recordingDelegate:self];
}

为下一个剪辑生成新网址。

-(NSURL*) getNextURL
{
    videoNumber++;
    NSString *outputPath = [self getTempVideoOutputPath:videoNumber];
    NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:outputPath];

    return outputURL;
}

传入剪辑编号以创建新的临时URL。例如,此方法将创建视频文件clip-1.mov,clip-2.mov,clip-3.mov等。

-(NSString*)getTempVideoOutputPath: (int) clipNumber
{
    //Create temporary URL to record to
    NSString *outputFileName = [NSString stringWithFormat:@"clip-%i.mov",clipNumber];
    NSString *outputPath = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), outputFileName];

    return outputPath;
}