これは奇妙で私を超えています。AppleからAVCAMの例を取り、それをアプリに貼り付けると(すべてのファイル、宣言などとともに)、カメラを問題なく使用できます。このアプリは、静止画、ビデオ、保存、オートフォーカスなどをキャプチャします。すべてがうまく機能しますが、1つは、プレビューレイヤー(カメラが何を指しているかを確認するため)がロードされてフリーズしたままの最初のフレームでフリーズすることです。これが私のメインコントローラーのviewDidLoadに入るAppleからのコードです:
if ([self captureManager] == nil) {
AVCamCaptureManager *manager = [[AVCamCaptureManager alloc] init];
[self setCaptureManager:manager];
[manager release];
[[self captureManager] setDelegate:self];
if ([[self captureManager] setupSession]) {
// Create video preview layer and add it to the UI
AVCaptureVideoPreviewLayer *newCaptureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:[[self captureManager] session]];
UIView *view = [self videoPreviewView];
CALayer *viewLayer = [view layer];
[viewLayer setMasksToBounds:YES];
CGRect bounds = [view bounds];
[newCaptureVideoPreviewLayer setFrame:bounds];
if ([newCaptureVideoPreviewLayer isOrientationSupported]) {
[newCaptureVideoPreviewLayer setOrientation:AVCaptureVideoOrientationPortrait];
}
[newCaptureVideoPreviewLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
[viewLayer insertSublayer:newCaptureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];
[self setCaptureVideoPreviewLayer:newCaptureVideoPreviewLayer];
[newCaptureVideoPreviewLayer release];
// Start the session. This is done asychronously since
// -startRunning doesn't return until the session is running.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[[[self captureManager] session] startRunning]; });
}
}
逆に、Appleのコードをアプリに貼り付ける代わりに、コードをAppleのAVCAMに貼り付けて、それが機能するかどうかを確認することにしました。たくさんのファイルを移動し、基本的にAVCAMを私の実験的なアプリに変えた後、すべてがうまく機能します。両方のプロジェクト(1-AppleのAVCAMにコードを追加しました-2-AVCAMにコードを追加した元のプロジェクト)には、まったく同じファイルとまったく同じコードがあります。冗談抜き。両方のプロジェクトのクラスヘッダーと実装ファイルは同じです。ただし、元のプロジェクトでは、プレビューレイヤーがフリーズし、フリーズしたままになります。ただし、AVCAMの元のプロジェクトでは、プレビューレイヤーが機能します。だから私はフレームワーク、ビルドとリンクのオプション、SDKバージョンなどをチェックしています...それはどこかのプロジェクトセットアップだと思いますが、これを理解することはできません。私は本当にしません
誰かがこれに遭遇しましたか?ビューがロードされた直後の最初のフレームでプレビューレイヤーがフリーズしました。
手がかりはありますか?(ところで、私はSDK 5.1、armv7を使用しており、デバイスで実行しています)。
前もって感謝します!!