2

次のようにカメラの画像を表示するlayerRectがあります。

CGRect layerRect = [[videoStreamView layer] bounds];
[[[self captureManager] previewLayer] setBounds:layerRect];
[[[self captureManager] previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect),
                                                              CGRectGetMidY(layerRect))];
[[videoStreamView layer] addSublayer:[[self captureManager] previewLayer]];

これvideoStreamViewは、150x150 のビデオを表示するためのビューです。しかしsetSampleBufferDelegate、私AVCaptureVideoDataOutputが取得したビデオフレームは、カメラ画像全体 (1280 * 720) です。どうすれば変更できますか? ありがとう。

4

4 に答える 4

1

AVCaptureSessionsessionPresetプロパティによって制御されていると思います。画像サイズなどに関して、各プリセット値が何を意味するのかをまだ理解しようとしています.

于 2014-10-30T15:49:14.063 に答える
0

もしかしてこれで解決?

CGRect bounds = view.layer.bounds;
previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
previewLayer.bounds=bounds;
previewLayer.position=CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
于 2013-08-16T11:55:43.783 に答える
-1

このコードを試してください

AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[self.captureManager session]];
newCaptureVideoPreviewLayer.frame = bounds;//CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width);
于 2013-08-16T11:34:00.820 に答える
-1
@property (nonatomic, retain) AVCaptureVideoPreviewLayer *prevLayer;

それで:

self.prevLayer = [AVCaptureVideoPreviewLayer layerWithSession: self.captureSession];
    self.prevLayer.frame = yourRect;
[self.view.layer addSublayer: self.prevLayer];
于 2013-08-16T11:39:32.067 に答える