iOS開發(fā)中GUPImage摳除綠幕視頻

最近接到一個需求,需要將一個綠幕視頻的綠幕背景摳成透明色。并將其加到攝像機(jī)鏡頭上。

NSString *path = [DownLoadTool getFileWithName:[DataManage getObjectForKey:[self.uuid stringByAppendingString:@"-ar"]]];

    NSURL *mediaURL = [NSURL fileURLWithPath:path];
    self.item = [AVPlayerItem playerItemWithURL:mediaURL];
    self.myPlayer = [AVPlayer playerWithPlayerItem:self.item];
    [self.myPlayer seekToTime:kCMTimeZero];
    self.movieGreen = [[GPUImageMovie alloc] initWithURL:mediaURL];

    self.movieGreen.playAtActualSpeed = YES;
    self.movieGreen.shouldRepeat = YES;
    NSString*resFilename =@"1.png";
    UIImage*inputImage = [UIImage imageNamed:resFilename];
    self.movieNormal = [[GPUImagePicture alloc]initWithImage:inputImage smoothlyScaleOutput:YES];
    
    NSURL *videoURl = [NSURL fileURLWithPath:path];
    AVAsset *asset = [AVAsset assetWithURL:videoURl];
    NSArray *array = asset.tracks;
    CGSize videoSize = CGSizeZero;
    for (AVAssetTrack *track in array) {
        if ([track.mediaType isEqualToString:AVMediaTypeVideo]) {
            videoSize = track.naturalSize;
        }
    }
    self.gpuImageView = [[GPUImageView alloc] initWithFrame:CGRectMake(0, 0, kWholeScreenWidth, videoSize.height*kWholeScreenWidth/videoSize.width)];
    self.gpuImageView.center = self.center;
    self.gpuImageView.fillMode = kGPUImageFillModePreserveAspectRatio;

    self.gpuImageView.backgroundColor = [UIColor clearColor];
    [filteredVideoView addSubview:self.gpuImageView];
    


    [self.movieGreen addTarget:chromaKeyBlendFilter];
    [self.movieNormal addTarget:chromaKeyBlendFilter];
    [chromaKeyBlendFilter addTarget:self.gpuImageView];

解釋一下AVPlayerItemAVPlayer是用來播放視頻聲音的
GPUImageMovie是播放綠幕視頻的
GPUImagePicture是背景圖層放透明的圖片1.png
GPUImageView是父組件
chromaKeyBlendFilterGPUImageChromaKeyBlendFilter濾鏡用來過濾綠色。

運行發(fā)現(xiàn)GPUImageMovie播放音畫不同步。
通過搜索有大神已經(jīng)貼出了相關(guān)解決辦法。
就是修改GPUImageMovie.m中的readNextVideoFrameFromOutput方法。
具體鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容