2009-03-07 2 views
0

전 QTKit가 새로 생겼고 카메라의 이미지와 동영상을 표시하는 데 사용하려고하는 다음 코드에 대한 피드백을 찾고있었습니다.코코아 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]; 

} 

은 또한, 나는이 방법을 위해 계속 전화 전체 오류 매개 변수에 대한 확실하지 않다, 나는 예에서 "& 오류"기호를 보았다 그러나 나는 그것이 무엇을 의미하는지 모른다.

명시 적으로 장치를 열 때 "열 수없는 장치를 초기화 할 수 없습니다."라는 오류 메시지가 나타납니다.

누군가가이 문제를 해결할 수 있다면 큰 도움이 될 것입니다. 감사합니다.

답변

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를 실행 한 것 거기에서 경로를 얻었다)

Also, I'm not sure about the whole error parameter that the methods keep calling for, I saw the " &error " symbol in an example but I don't know what it means.

& 당신이 변수의 주소를 복용하고 의미 이 경우는 error입니다. 이 주소 (a.k.a. 포인터)를 QTKit 메소드 중 하나의 error: 인수에 전달하고 있습니다. 이 메서드는 오류가 발생하면 NSError 개체를 만들어 해당 주소 (변수)에 저장합니다. 이를 "참조에 의한 리턴"이라고합니다 ("참조"는 사용자가 제공 한 포인터 임).

I'm also getting an error "cannot initialize a device that is not open" when I explicitly open the devices.

어떤 방법으로 오류가 반환됩니까? NSE 오류 또는 콘솔 메시지에 대해 이야기하고 있습니까? 후자의 경우 NSError 변수를 확인하고 문제가 남은 방법을 확인하십시오.

QTKit 메서드 중 하나에서 오류가 반환되면 다음과 같은 메시지가 나타나면 오류가 발생하여 오류가 발생합니다.

2

또한 MyRecorder sample code을 볼 수도 있습니다. QTKit Capture API를 기반으로 한 완벽한 기능의 비디오 레코더입니다. 코드는 비교적 간단하며 이해하기 쉬워야합니다.