在iOS上保存了视频过滤功能

时间:2012-01-27 08:46:35

标签: ios avfoundation core-image

如何制作过滤iOS中照片库中已保存视频的过程?

我使用AssetsLibrary框架获取了库中的视频网址,

然后,预览视频。

下一步,我想使用CIFilter对视频进行过滤。

如果出现实时问题,我使用AVCaptureVideoDataOutputSampleBufferDelegate进行了视频过滤处理。

但是在保存视频的情况下,我不知道如何进行过滤处理。

我使用AVAsset吗?如果我必须使用它,我该如何过滤它?以及如何保存它?

总是非常感谢你。

2 个答案:

答案 0 :(得分:5)

我希望这会对你有所帮助

 AVAsset *theAVAsset = [[AVURLAsset alloc] initWithURL:mNormalVideoURL options:nil];
       NSError *error = nil;
        float width = theAVAsset.naturalSize.width;
        float height = theAVAsset.naturalSize.height; 
        AVAssetReader *mAssetReader = [[AVAssetReader alloc] initWithAsset:theAVAsset error:&error]; 
        [theAVAsset release];




    NSArray *videoTracks = [theAVAsset tracksWithMediaType:AVMediaTypeVideo]; 
    AVAssetTrack *videoTrack = [videoTracks objectAtIndex:0];
    mPrefferdTransform = [videoTrack preferredTransform];


    NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey];
   AVAssetReaderTrackOutput* mAssetReaderOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:videoTrack outputSettings:options];

    [mAssetReader addOutput:mAssetReaderOutput];
    [mAssetReaderOutput release];


    CMSampleBufferRef buffer = NULL;
    //CMSampleBufferRef buffer = NULL;
    while ( [mAssetReader status]==AVAssetReaderStatusReading ){
            buffer = [mAssetReaderOutput copyNextSampleBuffer];//read next image.
}

答案 1 :(得分:0)

你应该看看CVImageBufferRef pixBuf = CMSampleBufferGetImageBuffer(sbuf)然后你可以拥有图像指针的第一个地址,这样你就可以为pixBuf添加过滤器,但我发现性能不好,如果你有任何新想法,我们可以进一步讨论它。