【问题标题】:iOS video recording in chunksiOS 视频分块录制
【发布时间】:2015-01-20 15:51:01
【问题描述】:

是否可以在连续重新编码时剪辑视频文件?我正在寻找的是说我录制视频,我想每 5 秒将视频剪辑发送到服务器,直到录制停止。例如,一个视频文件记录 10 秒。我想发送 2 个持续时间为 5 秒的视频文件。第一个文件被发送,同时视频连续录制接下来的 5 秒。

【问题讨论】:

    标签: ios video recording chunks


    【解决方案1】:

    看看这个教程:

    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 秒文件,你可以用它们做任何你想做的事情。

    预览显示不显示有某种停止,录制按钮也是如此。

    【讨论】:

    • 这两个答案都会在录音之间留下一点点缺失的时间。之后组装视频时,这不是一种自然的体验。每 X 秒有一些丢失的毫秒..
    【解决方案2】:

    这是以 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];
    }
    

    为下一个剪辑生成一个新的 URL。

    -(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;
    }
    

    【讨论】:

    • 这两个答案都会在录音之间留下一点点缺失的时间。之后组装视频时,这不是一种自然的体验。每 X 秒有一些丢失的毫秒..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2023-03-05
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    相关资源
    最近更新 更多