3

GPUImageを使用してムービーの特定のフレームにエフェクトを適用したい。ムービーファイル全体にエフェクトを追加できましたが、フレームごとに異なるエフェクトを追加する方法はありますか?

たとえば、5秒から10秒までのビデオにセピアの効果を適用したいと思います。したがって、元のビデオには0〜5秒、セピア効果の場合は5〜10秒、元のビデオの場合は合計10秒必要です。

また、GPUImageを使用して特定のフレームにテキスト/画像を描画したいのですが、可能ですか?

ご回答いただければ幸いです。

4

1 に答える 1

1

MPMoviePlayerControllerまたはAVAssetImageGeneratorに、指定した時間にサムネイルを生成するように依頼できます。

iPhone AVFoundationを使用してビデオからUIimage(フレーム)を読み取る

AVAssetImageGeneratorは、回転した画像を提供します

フレームだけでなくビデオが必要な場合は、ビデオからセクションを切り取って、それにエフェクトを適用することができます。これにより、ビデオのURLが取得され、指定された時間にトリミングされます。

    AVURLAsset *videoAsset = [AVURLAsset URLAssetWithURL:videoURL options:nil]; 
    AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:videoAsset presetName:AVAssetExportPresetHighestQuality];
    exportSession.outputURL = [NSURL fileURLWithPath:outputURL];
    exportSession.outputFileType = AVFileTypeQuickTimeMovie;
    CMTimeRange timeRange = CMTimeRangeMake(CMTimeMake(startMilliseconds, 1000), CMTimeMake(endMilliseconds - startMilliseconds, 1000));
    exportSession.timeRange = timeRange;

    [exportSession exportAsynchronouslyWithCompletionHandler:^{
        switch (exportSession.status) {
            case AVAssetExportSessionStatusCompleted:
                 ///
                // Call something to apply the effect
               ///
                break;
            case AVAssetExportSessionStatusFailed:
                NSLog(@"Failed:%@", exportSession.error);
                break;
            case AVAssetExportSessionStatusCancelled:
                NSLog(@"Canceled:%@", exportSession.error);
                break;
            default:
                break;
        }
    }];

完了したら、エフェクトを適用し、ビデオクリップルートを使用した場合は、それらを組み合わせてエンコードします。

AVFoundationを使用して異なる方向のビデオクリップを組み合わせる方法

于 2012-05-18T13:16:12.533 に答える