0

押されたさまざまなオプション、タイマー、セルフタイマーなどごとにわずかに異なるストップモーションアプリのかなり長い方法があります

メソッドの本体を定義できます。

 // initiate a still image capture, return immediately
// the completionHandler is called when a sample buffer has been captured
AVCaptureConnection *stillImageConnection = [stillImageOutput connectionWithMediaType:AVMediaTypeVideo];
[stillImageOutput captureStillImageAsynchronouslyFromConnection:stillImageConnection 
    completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *__strong error) {

      // set up the AVAssetWriter using the format description from the first sample buffer captured
      if ( !assetWriter ) {
          outputURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%llu.mov", NSTemporaryDirectory(), mach_absolute_time()]];
          //NSLog(@"Writing movie to \"%@\"", outputURL);
          CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(imageDataSampleBuffer);
          if ( NO == [self setupAssetWriterForURL:outputURL formatDescription:formatDescription] )
              return;
      }

      // re-time the sample buffer - in this sample frameDuration is set to 5 fps
      CMSampleTimingInfo timingInfo = kCMTimingInfoInvalid;
      timingInfo.duration = frameDuration;
      timingInfo.presentationTimeStamp = nextPTS;
      CMSampleBufferRef sbufWithNewTiming = NULL;
      OSStatus err = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault, 
                                                           imageDataSampleBuffer, 
                                                           1, // numSampleTimingEntries
                                                           &timingInfo, 
                                                           &sbufWithNewTiming);
      if (err)
          return;

       // append the sample buffer if we can and increment presnetation time
      if ( [assetWriterInput isReadyForMoreMediaData] ) {
          if ([assetWriterInput appendSampleBuffer:sbufWithNewTiming]) {
              nextPTS = CMTimeAdd(frameDuration, nextPTS);
          }
          else {
              NSError *error = [assetWriter error];
              NSLog(@"failed to append sbuf: %@", error);
          }
      }

      // release the copy of the sample buffer we made
      CFRelease(sbufWithNewTiming);
    }];

タイマーなどを使用してメソッドのバリエーションを作成するだけです

最初にシングルトンを作成しようとしましたが、呼び出されたメソッドを取得しましたが、ファイルの保存と書き込みに関して他の問題がありました。メソッドからマクロを作成できますか?

SO here iOS create macroについて調査しました

私は正しい軌道に乗っていますか?その例のように、イメージではなくメソッドを定義できますか

4

1 に答える 1