2

我正在使用 GPUImage 框架,它非常好。在我的应用程序中,我录制了视频,然后在录像机视频上添加了叠加层。(由于我的要求。)

第 1 步:录制视频工作正常,我得到了正确的视频。

第 2 步:在视频文件上添加叠加层,在这里我遇到问题并以小尺寸输出黑色视频。

我的代码如下:

    self.movieFile = [[GPUImageMovie alloc] initWithURL:capturevideoURL];
    self.movieFile.delegate = self;
    self.movieFile.runBenchmark = YES;
    self.movieFile.playAtActualSpeed = YES;

    [self.movieFile addTarget:self.filter];

    UIImage *inputImage = self.overlayImage;
    GPUImagePicture *overlayPicture = [[GPUImagePicture alloc] initWithImage:inputImage];
    [overlayPicture addTarget:self.filter];
    [overlayPicture processImage];

    // Only rotate the video for display, leave orientation the same for recording
    GPUImageView *filterView = (GPUImageView *)self.view;
    [self.filter addTarget:filterView];


    [CommonFunction DeleteFileFromApp:@"Movie.m4v"];
    NSString *pathToMovie = [CommonFunction GetPathForFileName:@"Movie.m4v"];

    unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie
    NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie];

    self.movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(320.0, 480.0)];
    [self.filter addTarget:self.movieWriter];

    // Configure this for video from the movie file, where we want to preserve all video frames and audio samples
    self.movieWriter.shouldPassthroughAudio = YES;
    self.movieFile.audioEncodingTarget = self.movieWriter;
    [self.movieFile enableSynchronizedEncodingUsingMovieWriter:self.movieWriter];

    [self.movieWriter startRecording];
    [self.movieFile startProcessing];
    NSLog(@"Start Overlaying...");

    __weak GPUImageNormalBlendFilter *filterlocal = self.filter;
    __weak GPUImageMovieWriter *moviewriterlocal = self.movieWriter;
    __weak typeof(self) weakSelf = self;

    [movieWriter setCompletionBlock:^{
        [filterlocal removeTarget:moviewriterlocal];
        [moviewriterlocal finishRecording];
        [weakSelf loadVideo];
    }];

你能建议我,如何解决这个黑色视频输出的问题吗?

谢谢

4

0 回答 0