我想使用GPUImage將特效應用於某些電影幀。我已經在整個電影文件上成功添加了效果,那麼是否有辦法在不同的幀上添加不同的效果?使用GPUImage編輯某些電影幀
例如,我想應用Sepia對視頻的效果,從5秒到10秒。所以我需要0-5秒鐘才能成爲原始視頻,5-10分鐘帶有棕褐色效果,10分鐘視頻帶有原始視頻。
此外,我想使用GPUImage在某些幀上繪製文本/圖像,有可能嗎?
任何反應將不勝感激。
我想使用GPUImage將特效應用於某些電影幀。我已經在整個電影文件上成功添加了效果,那麼是否有辦法在不同的幀上添加不同的效果?使用GPUImage編輯某些電影幀
例如,我想應用Sepia對視頻的效果,從5秒到10秒。所以我需要0-5秒鐘才能成爲原始視頻,5-10分鐘帶有棕褐色效果,10分鐘視頻帶有原始視頻。
此外,我想使用GPUImage在某些幀上繪製文本/圖像,有可能嗎?
任何反應將不勝感激。
您可以要求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
布蘭登,謝謝你的替代解決方案。你的意思是,如果我想對視頻應用效果從5秒到10秒,我應該先導出這5秒視頻,然後使用GPUImage應用效果,然後將其插入原始視頻? – iMOBDEV
是的,這似乎是我能找到的最佳解決方案。我當然不是這方面的專家,所以別人可能會有更好的答案。 –
感謝您的解決方案,我已經想到了這一點,但我需要更好的解決方案,因爲如果我在不同的時間範圍應用多個效果,可能需要時間。 – iMOBDEV