首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa QTKit和录制电影

Cocoa QTKit和录制电影
EN

Stack Overflow用户
提问于 2009-03-07 21:49:37
回答 2查看 2.1K关注 0票数 0

我是整个QTKit的新手,我正在寻找一些关于以下代码的反馈,我试图使用这些代码来显示相机的图像和录制电影。

代码语言:javascript
复制
- (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“。

如果有人能帮我解决这个问题,那就帮了大忙了,谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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方法返回错误时都应该退出的原因:如果不返回错误,则后续的某个消息可能会用一个新的错误来阻止它。

票数 2
EN

Stack Overflow用户

发布于 2009-03-08 14:18:55

此外,您可能需要查看MyRecorder sample code。它是一个基于QTKit捕获应用编程接口的全功能视频记录器。代码相当简单,应该很容易理解。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/622567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档