我是整个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参数,我在一个示例中看到了"&error“符号,但我不知道它是什么意思。
当我显式打开设备时,我也得到了一个错误"cannot initialize a device that is not open“。
如果有人能帮我解决这个问题,那就帮了大忙了,谢谢。
发布于 2009-03-07 22:40:48
defaultInputDeviceWithMediaType:@"QTMediaTypeVideo";
* deviceVideo = QTCaptureDevice QTCaptureDevice
defaultInputDeviceWithMediaType:@"QTMediaTypeSound";* deviceAudio = QTCaptureDevice捕获设备
在这里传递实际的常量,而不是包含其名称的字符串文字。不能保证将QTMediaTypeVideo定义为@"QTMediaTypeVideo";它可以是@"Ollie ollie oxen free",即使它是您现在所期望的,也可以随时更改。
[output recordToOutputFileURL:NSURL
不要假设当前的工作目录是/。始终使用绝对路径。(我知道这是测试代码;当然,在实际代码中,您应该运行一个NSSavePanel并从中获得路径。)
此外,我不确定方法不断调用的整个
参数,我在一个示例中看到了"
&error“符号,但我不知道它是什么意思。
&表示您要获取变量的地址,在本例中是error。您正在传递此地址(也称为指向一个QTKit方法的error:参数的指针)。如果遇到错误,该方法将创建一个NSError对象并将其存储在该地址-即,在您的变量中。这被称为“按引用返回”(“reference”是您提供的指针)。
当我显式打开设备时,我也收到错误消息"cannot initialize a device that is not open“。
哪个方法返回错误?您是在谈论NSError,还是仅仅是一条控制台消息?如果是后者,请检查您的NSError变量,看看problem方法留下了什么。
顺便说一句,这就是为什么当任何QTKit方法返回错误时都应该退出的原因:如果不返回错误,则后续的某个消息可能会用一个新的错误来阻止它。
发布于 2009-03-08 14:18:55
此外,您可能需要查看MyRecorder sample code。它是一个基于QTKit捕获应用编程接口的全功能视频记录器。代码相当简单,应该很容易理解。
https://stackoverflow.com/questions/622567
复制相似问题