Сохраненная фильтрация видео на iOS - PullRequest
2 голосов
/ 27 января 2012

Как сделать процесс фильтрации сохраненного видео в библиотеке фотографий в iOS?

Я получил URL видео в библиотеке, используя инфраструктуру AssetsLibrary,

Затем сделал предварительный просмотр для видео.

Следующий шаг, я хочу сделать процесс фильтрации видео с помощью CIFilter.

В случае проблем в реальном времени, я сделал процесс видеофильтра с использованием AVCaptureVideoDataOutputSampleBufferDelegate.

Но в случае сохраненного видео я не знаю, как сделать процесс фильтрации.

Использую ли я AVAsset? Если я должен использовать это, как я могу отфильтровать это? и как его сохранить?

всегда спасибо.

Ответы [ 2 ]

5 голосов
/ 07 февраля 2012

Я надеюсь, что это поможет вам

 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.
}
0 голосов
/ 07 февраля 2012

Вы должны взглянуть на CVImageBufferRef pixBuf = CMSampleBufferGetImageBuffer (sbuf), тогда у вас может быть первый адрес указателя изображения, так что вы можете добавить фильтр в pixBuf, но я считаю, что производительность не очень хорошая, если у вас есть новая идеямы можем обсудить это далее.

...