2009-03-09 10 views
0

は、私は次のようにQTCaptureSessionに2つの入力を追加しようとしています:QTKit、入力デバイスを開く?

[QTCaptureDeviceInput initWithDevice:]- cannot intialize device input with device that is not open.

私がしました:

mainSession = [[QTCaptureSession alloc] init]; 

BOOL success; 
NSError* error; 

QTCaptureDevice *videoDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeVideo"]; 
success = [videoDevice open:&error]; 

QTCaptureDevice *audioDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:@"QTMediaTypeSound"]; 
success = [audioDevice open:&error]; 

//video = [[QTCaptureDeviceInput alloc] initWithDevice:videoDevice]; 
//success = [mainSession addInput:video error:&error]; 

//audio = [[QTCaptureDeviceInput alloc] initWithDevice:audioDevice]; 
//success = [mainSession addInput:audio error:&error]; 

output = [[QTCaptureMovieFileOutput alloc] init]; 
success = [mainSession addOutput:output error:&error]; 

[output setDelegate:self]; 

[movieView setCaptureSession:mainSession]; 

[mainWindow makeKeyAndOrderFront:NSApp]; 

[mainSession startRunning]; 

私がコメントアウト部分がエラーの発生源であると判断しましたオープンメソッドの後に私の "成功"変数を調べて、それははいです。では、その方法では、デバイスが開いていないと思われる理由は何ですか?

+0

あなたはすでにこれを聞いていないですか? http://stackoverflow.com/questions/622567/cocoa-qtkit-and-recording-movies –

+0

私はそれについて考えていましたが、これを「正確に」尋ねなかったので、私はおそらくもっと答えを得るだろうと考えました以前の質問に詳細を追加しようとするのではなく、新しい質問を投稿するのに対し、以前の質問は一般的なフィードバックを求めていました。 – cemulate

答えて

1

あなたがまだ答えを見つけていない場合、あなたの問題は実際にあなたが指摘した2つの上の行にあると思います。私はAppleのマニュアルをチェックして、QTMediaTypeSoundとQTMediaTypeVideoは手作業で渡すべき文字列ではなく、定数であることを発見しました。例えば、QTMediaTypeVideo定数が実際に "vide"に等しいことをNSLog()要するに

、あなたのコードは次のようになります。

mainSession = [[QTCaptureSession alloc] init]; 

BOOL success; 
NSError* error; 

QTCaptureDevice *videoDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeVideo]; 
success = [videoDevice open:&error]; 

QTCaptureDevice *audioDevice = [QTCaptureDevice defaultInputDeviceWithMediaType:QTMediaTypeSound]; 
success = [audioDevice open:&error]; 

video = [[QTCaptureDeviceInput alloc] initWithDevice:videoDevice]; 
success = [mainSession addInput:video error:&error]; 

audio = [[QTCaptureDeviceInput alloc] initWithDevice:audioDevice]; 
success = [mainSession addInput:audio error:&error]; 

output = [[QTCaptureMovieFileOutput alloc] init]; 
success = [mainSession addOutput:output error:&error]; 

[output setDelegate:self]; 

[movieView setCaptureSession:mainSession]; 

[mainWindow makeKeyAndOrderFront:NSApp]; 

[mainSession startRunning]; 
関連する問題