0

私はQTKit全体を初めて使用し、カメラの画像を表示してムービーを記録するために使用しようとしている次のコードに関するフィードバックを探していました。

- (void)initializeMovie {

NSLog(@"Hi!");

QTCaptureSession* mainSession = [[QTCaptureSession alloc] init];

QTCaptureDevice* deviceVideo = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeVideo"];

QTCaptureDevice* deviceAudio = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeSound"];

NSError* error;

[deviceVideo open:&error];
[deviceAudio open:&error];

QTCaptureDeviceInput* video = [QTCaptureDeviceInput deviceInputWithDevice:deviceVideo];

QTCaptureDeviceInput* audio = [QTCaptureDeviceInput deviceInputWithDevice:deviceAudio];

[mainSession addInput:video error:&error];
[mainSession addInput:audio error:&error];

QTCaptureMovieFileOutput* output = [[QTCaptureMovieFileOutput alloc] init];
[output recordToOutputFileURL:[NSURL URLWithString:@"Users/chasemeadors/Desktop/capture1.mov"]];

[mainSession addOutput:output error:&error];

[movieView setCaptureSession:mainSession];

[mainSession startRunning];

}

また、メソッドが呼び出し続けるエラー パラメータ全体についてはよくわかりません。例で「&error」記号を見ましたが、その意味がわかりません。

デバイスを明示的に開くと、「開いていないデバイスを初期化できません」というエラーも表示されます。

誰かがこれを整理するのを手伝ってくれたら、とても助かります、ありがとう。

4

2 に答える 2

2

また、MyRecorder サンプル コードも参照してください。これは、QTKit Capture API に基づく完全に機能するビデオ レコーダーです。コードはかなり単純で、理解しやすいはずです。

于 2009-03-08T14:18:55.397 に答える
2

QTCaptureDevice* deviceVideo = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeVideo"];

QTCaptureDevice* deviceAudio = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeSound"];

名前を含む文字列リテラルではなく、実際の定数をここに渡します。QTMediaTypeVideoに定義されている保証はありません@"QTMediaTypeVideo"。である可能性があり@"Ollie ollie oxen free"、たとえあなたが期待しているものであっても、いつでも変わる可能性があります。

[output recordToOutputFileURL:[NSURL URLWithString:@"Users/chasemeadors/Desktop/capture1.mov"]];

現在の作業ディレクトリが / であると想定しないでください。常に絶対パスを使用してください。(これがテスト コードであることはわかっています。もちろん、実際のコードでは、NSSavePanel を実行して、そこからパスを取得します。)

また、メソッドが呼び出し続けるエラー パラメータ全体については&errorわかりません。例で " " 記号を見ましたが、それが何を意味するのかわかりません。

& は、変数のアドレスを取得していることを意味します。この場合はerror. このアドレス (別名ポインター) をerror:QTKit のメソッドの 1 つの引数に渡します。エラーが発生した場合、このメソッドは NSError オブジェクトを作成し、そのアドレス (つまり、変数) に格納します。これは「参照渡し」と呼ばれます (「参照」は指定したポインターです)。

デバイスを明示的に開くと、「開いていないデバイスを初期化できません」というエラーも表示されます。

エラーを返すメソッドはどれですか? NSError について話しているのですか、それとも単にコンソール メッセージについて話しているのですか? 後者の場合は、NSError 変数をチェックして、問題のメソッドが何を残したのかを確認してください。

ちなみに、これが、QTKit メソッドのいずれかがエラーを返した場合に救済する必要がある理由です。そうしないと、後続のメッセージの 1 つが新しいエラーでそれを上書きする可能性があります。

于 2009-03-07T22:40:48.070 に答える