2012-05-10 84 views
3

我想使用GPUImage將特效應用於某些電影幀。我已經在整個電影文件上成功添加了效果,那麼是否有辦法在不同的幀上添加不同的效果?使用GPUImage編輯某些電影幀

例如,我想應用Sepia對視頻的效果,從5秒到10秒。所以我需要0-5秒鐘才能成爲原始視頻,5-10分鐘帶有棕褐色效果,10分鐘視頻帶有原始視頻。

此外,我想使用GPUImage在某些幀上繪製文本/圖像,有可能嗎?

任何反應將不勝感激。

回答

1

您可以要求MPMoviePlayerController或AVAssetImageGenerator在您指定時生成縮略圖。

iPhone Read UIimage (frames) from video with AVFoundation

AVAssetImageGenerator provides images rotated

如果您想視頻,而不只是框架,你可以修剪出視頻的部分,適用於該效果。這需要您的視頻的網址並將其修剪到指定的時間。

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

完成後,你再申請的效果,如果你有視頻剪輯的路線去,將它們結合起來,並對其進行編碼。

How to combine video clips with different orientation using AVFoundation

+0

布蘭登,謝謝你的替代解決方案。你的意思是,如果我想對視頻應用效果從5秒到10秒,我應該先導出這5秒視頻,然後使用GPUImage應用效果,然後將其插入原始視頻? – iMOBDEV

+0

是的,這似乎是我能找到的最佳解決方案。我當然不是這方面的專家,所以別人可能會有更好的答案。 –

+0

感謝您的解決方案,我已經想到了這一點,但我需要更好的解決方案,因爲如果我在不同的時間範圍應用多個效果,可能需要時間。 – iMOBDEV

相關問題