0

UIImageView をドラッグしている間、パフォーマンス/滑らかさが必要です。Apple のMoveMe サンプルアプリを使用している間は滑らかになっていますが、コードに同じものを実装するとパフォーマンスが低下します。

画面と音声のビデオも記録しています。私はすでにバックグラウンドでビデオとオーディオの記録を保持しているため、パフォーマンスが向上しますが、それでも多少かゆみがあります.

PuppetpalHD app on itunes に気が付くと、非常に滑らかです。それを達成する方法???

これが私のコードです:

ボタンクリック時:

if (Isrecording ==YES)
{
    [captureview performSelectorInBackground:@selector(startRecording) withObject:nil];
    [self performSelectorInBackground:@selector(startAudioRecording) withObject:nil];
    Isrecording =NO;
    [btnRecord setTitle:@"Stop" forState:UIControlStateNormal];
}
else if (!Isrecording)
{
    [captureview performSelector:@selector(stopRecording) withObject:nil afterDelay:1.0];
    [self performSelector:@selector(stopAudioRecording) withObject:nil afterDelay:3.0];
    Isrecording=YES;
    [btnRecord setTitle:@"Record" forState:UIControlStateNormal];
    [self performSelector:@selector(putTogether) withObject:nil afterDelay:5.0];
}

上記のコードが表示された場合、私の startRecording 関数は画面を記録します。そして startAudioRecording はオーディオを録音します。

以下のコードは、UIImageView をドラッグするために使用されます。

- (void) touchesMoved:(NSSet*)touches withEvent:(UIEvent*)event
{
    UITouch *t = [touches anyObject];
    CGPoint pPrev = [t previousLocationInView:self];
    CGPoint p = [t locationInView:self];

    CGPoint center = self.center;
    center.x += p.x - pPrev.x;
    center.y += p.y - pPrev.y;
    self.center = center;
}

If I stop recording audio or video, then dragging is very smooth. How can I achieve smooth performance along with audio and video recording.

編集:

http://www.icodeblog.com/2010/10/14/working-with-uigesturerecognizers/にあるように UIPanGestureRecognizer を使用してみましたが、上記と同じケースがあります。オーディオとビデオの記録がなくても十分な滑らかさを得ていますが、それが含まれているとパフォーマンスが低下します...

編集2:

pointInside:withEvent:と比較してパフォーマンスの向上はありますtouchesMoved:withEvent:か?? 上記の最初の方法を使用しながら、以下のコードからパフォーマンスを得るにはどうすればよいですか??

UITouch *t = [touches anyObject];
CGPoint pPrev = [t previousLocationInView:self];
CGPoint p = [t locationInView:self];

CGPoint center = self.center;
center.x += p.x - pPrev.x;
center.y += p.y - pPrev.y;
self.center = center;

編集3:

私の画面ビデオ録画コード部分を含む:

-(BOOL) setUpWriter {
NSError* error = nil;
videoWriter = [[AVAssetWriter alloc] initWithURL:[self tempFileURL] fileType:AVFileTypeQuickTimeMovie error:&error];
NSParameterAssert(videoWriter);

//Configure video
NSDictionary* videoCompressionProps = [NSDictionary dictionaryWithObjectsAndKeys:
                                       [NSNumber numberWithDouble:1024.0*1024.0], AVVideoAverageBitRateKey,
                                       nil ];

NSDictionary* videoSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                               AVVideoCodecH264, AVVideoCodecKey,
                               [NSNumber numberWithInt:self.frame.size.width], AVVideoWidthKey,
                               [NSNumber numberWithInt:self.frame.size.height], AVVideoHeightKey,
                               videoCompressionProps, AVVideoCompressionPropertiesKey,
                               nil];

videoWriterInput = [[AVAssetWriterInput assetWriterInputWithMediaType:AVMediaTypeVideo outputSettings:videoSettings] retain];

NSParameterAssert(videoWriterInput);
videoWriterInput.expectsMediaDataInRealTime = YES;
NSDictionary* bufferAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                  [NSNumber numberWithInt:kCVPixelFormatType_32ARGB], kCVPixelBufferPixelFormatTypeKey, nil];

avAdaptor = [[AVAssetWriterInputPixelBufferAdaptor assetWriterInputPixelBufferAdaptorWithAssetWriterInput:videoWriterInput sourcePixelBufferAttributes:bufferAttributes] retain];

//add input
[videoWriter addInput:videoWriterInput];
[videoWriter startWriting];
[videoWriter startSessionAtSourceTime:CMTimeMake(0, 1000)];

return YES;
}
4

0 に答える 0