我尝试过GPUImage库中的示例。 我试过'SimpleVideoFileFilter',但我看到它的黑屏都有滑块。 我试图通过我自己做同样的事情,我得到了完美的图像。 但我无法真正了解视频流程。 从项目本身获取视频的示例?来自mac的文件夹?或者来自iPhone的视频? 我没有Apple Developer帐户,所以我无法在我的设备上进行真正的测试。 我找到了在iPhone模拟器中放置随机(.m4v)文件的方法,并尝试播放/过滤视频。
是谁都有这个问题?我现在正在尝试播放iPhone模拟器或资源文件中的视频..我真的不知道它的工作原理。 我试过this链接,没有运气。以下是我们可以在GPUImage中找到的示例的一部分:
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"sample_iPod" withExtension:@"m4v"];
movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];
movieFile.runBenchmark = YES;
movieFile.playAtActualSpeed = YES;
filter = [[GPUImagePixellateFilter alloc] init];
// filter = [[GPUImageUnsharpMaskFilter alloc] init];
[movieFile addTarget:filter];
// Only rotate the video for display, leave orientation the same for recording
GPUImageView *filterView = (GPUImageView *)self.view;
[filter addTarget:filterView];
// In addition to displaying to the screen, write out a processed version of the movie to disk
NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/TestMovie.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];
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(640.0, 480.0)];
[filter addTarget:movieWriter];
// Configure this for video from the movie file, where we want to preserve all video frames and audio samples
movieWriter.shouldPassthroughAudio = YES;
movieFile.audioEncodingTarget = movieWriter;
[movieFile enableSynchronizedEncodingUsingMovieWriter:movieWriter];
[movieWriter startRecording];
[movieFile startProcessing];
[movieWriter setCompletionBlock:^{
[filter removeTarget:movieWriter];
[movieWriter finishRecording];
}];
}
应过滤视频的简单代码.. 所有我从那里得到的是带滑块的黑屏......
我在谈论this项目。
答案 0 :(得分:1)
使用GPUImage,模拟器中的电影播放目前无效。您需要在实际设备上运行此功能才能完成此操作。
我不确定为什么电影文件在从模拟器运行时不输出任何内容,但是欢迎您深入了解GPUImageMovie代码并查看可能出错的内容。由于它在实际硬件上运行时运行良好,因此它不是我的优先考虑事项。