gpt4 book ai didi

objective-c - Cocoa QTKit和录制电影

转载 作者:行者123 更新时间:2023-12-03 17:33:16 28 4
gpt4 key购买 nike

我是整个 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”符号,但我不知道它的含义。

当我显式打开设备时,我还收到错误“无法初始化未打开的设备”。

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

最佳答案

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.

& 表示您正在获取变量的地址,在本例中为错误。您将此地址(也称为指针)传递给 QTKit 方法之一的 error: 参数。如果遇到错误,该方法将创建一个 NSError 对象并将其存储在该地址中,即存储在您的变量中。这称为“按引用返回”(“引用”是您提供的指针)。

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

哪个方法返回错误?您是在谈论 NSError 还是只是控制台消息?如果是后者,请检查您的 NSError 变量并查看问题方法留下了什么。

顺便说一句,这就是为什么您应该在任何 QTKit 方法返回错误时退出:如果您不这样做,后续消息之一可能会用新的错误来破坏它。

关于objective-c - Cocoa QTKit和录制电影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/622567/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com