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