2013-02-11 2 views
9

Либо использование UIImagePicker Controller, либо AVFoundation Мне нужно захватить или записать видео, где должны записываться не только выходные данные камеры, но и надстройки наложения. Я видел много примеров, чтобы добавить оверлейное изображение в предварительный просмотр камеры, но то, что я хочу, - это не только оверлейное изображение или предварительный просмотр текста, но и фактическая запись наложения в конечном видеовыходе.Запись видео с наложением текста и изображения

// добавление графического слоя

CALayer *theDonut = [CALayer layer]; 
theDonut.bounds = CGRectMake(50,50, 150, 150); 
theDonut.cornerRadius = 50/2; 
theDonut.backgroundColor = [UIColor clearColor].CGColor; 
theDonut.borderWidth = 50/5; 
theDonut.borderColor = [UIColor orangeColor].CGColor; 

// Настройка видео Просмотр Layer

videoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:capSession]; 
videoPreviewLayer.frame = videoPreview.bounds; 
videoPreviewLayer.backgroundColor = [UIColor blackColor].CGColor; 
videoPreviewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 

videoPreview.layer.masksToBounds = YES; 
[videoPreview.layer addSublayer:videoPreviewLayer]; 
[videoPreview.layer addSublayer:theDonut]; 

// добавление текста слой

UIFont *font = [UIFont fontWithName:@"MarkerFelt-Thin" size:40.0]; 
    CGSize maxSize = CGSizeMake(480, 10000.0); 
    CGSize labelSize = [@"Test Text" sizeWithFont:font constrainedToSize:maxSize lineBreakMode:NSLineBreakByWordWrapping]; 
    CGRect labelFrame = CGRectMake(50.0, 10.0, labelSize.width, labelSize.height); 
    UILabel *label = [[UILabel alloc] initWithFrame:labelFrame]; 
    label.font = font; 
    label.text = @"Test Text"; 
    label.numberOfLines = 0; 
    [videoPreview addSubview:label]; 

// даже добавить кнопку накладку !! !

UIButton *snap = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [snap setImage:[UIImage imageNamed:@"takePic"] 
      forState:UIControlStateNormal]; 
    [snap addTarget:self 
      action:@selector(pickerCameraSnap:) 
    forControlEvents:UIControlEventTouchUpInside]; 
    snap.frame = CGRectMake(74, 370, 178, 37); 

    [videoPreview addSubview:snap]; 

    // 8) Commit session configuration 
    // 9) Start running capture session 
    // ======================================== 
    [capSession commitConfiguration]; 
    [capSession startRunning]; 


    //Make sure video is not recording 
    [[videoDataOutput connectionWithMediaType:AVMediaTypeVideo] setEnabled:NO]; 

Этот пример модифицируется из этого примера кода - Он добавить текст и рисунок на просмотр видео, но не записывает те, в окончательном выходном файле.

http://ioscoreframeworks.com/assets/code/DemoCapture.zip

+0

Существует видео WWDC, в котором описано, как это сделать, и есть связанный исходный код. Я не могу вспомнить имя презентации сейчас (AVFoundation ...), но ее легко найти. –

+0

@ skinnyTOD: на самом деле прошло много видеороликов WWDC об AVFoundation, но не удалось найти простой, но точный код для этой конкретной необходимости, поэтому он помог в StackOverFlow. в любом случае я все еще занимаюсь серфингом через видео WWDC, опубликует решение, как только я получу его. –

+0

Нашел один код, который добавляет водяной знак к видео AVSimpleEditor - это простое приложение для редактирования видео на основе AVFoundation, которое использует ... ... демонстрирует, как их можно использовать для простых задач редактирования видео. Он также демонстрирует, как они взаимодействуют с воспроизведением (AVPlayerItem) и экспортом (AVAssetExportSession). Приложение выполняет обрезку, поворот, обрезку, добавление музыки, добавление водяных знаков и экспорт. Этот образец поддерживает ARC. http://developer.apple.com/library/ios/#samplecode/AVSimpleEditoriOS/Introduction/Intro.html#//apple_ref/doc/uid/DTS40012797-Intro-DontLinkElementID_2 –

ответ

0

Вы можете попробовать приложение AVEditdemo, который включен в Sample Code WWDC 2010. К сожалению, вам нужно загрузить весь образец кода WWDC 2010, чтобы получить его (232.6mb). Вы можете получить всю загрузку всего кода здесь: http://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?code=y&source=x&bundleID=20645

Смежные вопросы