我正在尝试让视频过滤工作

时间:2013-11-12 14:51:11

标签: ios gpuimage

我尝试过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项目。

1 个答案:

答案 0 :(得分:1)

使用GPUImage,模拟器中的电影播放目前无效。您需要在实际设备上运行此功能才能完成此操作。

我不确定为什么电影文件在从模拟器运行时不输出任何内容,但是欢迎您深入了解GPUImageMovie代码并查看可能出错的内容。由于它在实际硬件上运行时运行良好,因此它不是我的优先考虑事项。