gpt4 book ai didi

iphone - iPhone 4前置摄像头视频录制?

转载 作者:行者123 更新时间:2023-12-03 19:22:50 25 4
gpt4 key购买 nike

我正在尝试借助从 iPhone 开发者计划获得的 WWDC 示例,使用 AVFoundation 框架从 iPhone 4 的前置摄像头录制视频。但我仍然无法让它工作..视频没有被录制或可能保存在我的iPhone库中...这是我正在尝试使用的代码...如果有人能帮助我解决这个问题,那将会非常有帮助我有??

-(void)recordVideo
{

AVCaptureDeviceInput *videoInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self backFacingCamera] error:nil];

AVCaptureMovieFileOutput *movieFileOutput = [[AVCaptureMovieFileOutput alloc] init];

AVCaptureSession *session = [[AVCaptureSession alloc] init];

[session addInput:videoInput];

[session addOutput:movieFileOutput];

[movieFileOutput release];


if (![session isRunning])
{
[self performSelector:@selector(startRecording) withObject:nil afterDelay:1.0];
[session startRunning];

}

}

- (void) startRecording
{
NSLog(@"start recording");


AVCaptureConnection *videoConnection = [playVideo connectionWithMediaType:AVMediaTypeVideo fromConnections:[[self movieFileOutput] connections]];
if ([videoConnection isVideoOrientationSupported]) {
[videoConnection setVideoOrientation:[self orientation]];
}

[[self movieFileOutput] startRecordingToOutputFileURL:[self tempFileURL]
recordingDelegate:self];
}
- (void) stopRecording
{
NSLog(@"stop recording");

[[self movieFileOutput] stopRecording];
}
- (NSURL *) tempFileURL
{
NSLog(@"temp file url");
NSString *outputPath = [[NSString alloc] initWithFormat:@"%@%@", NSTemporaryDirectory(), @"output.mov"];
NSURL *outputURL = [[NSURL alloc] initFileURLWithPath:outputPath];
NSFileManager *fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:outputPath]) {
NSLog(@"exists");
}
[outputPath release];
return [outputURL autorelease];
}
- (void) setConnectionWithMediaType:(NSString *)mediaType enabled:(BOOL)enabled;
{

[[playVideo connectionWithMediaType:AVMediaTypeVideo fromConnections:[[self movieFileOutput] connections]] setEnabled:enabled];
}

+ (AVCaptureConnection *)connectionWithMediaType:(NSString *)mediaType fromConnections:(NSArray *)connections;
{
NSLog(@"connection with media type");
for ( AVCaptureConnection *connection in connections ) {
for ( AVCaptureInputPort *port in [connection inputPorts] ) {
if ( [[port mediaType] isEqual:mediaType] ) {
return [[connection retain] autorelease];
}
}
}
return nil;
}
@implementation recordVideo (Internal)

- (AVCaptureDevice *) cameraWithPosition:(AVCaptureDevicePosition) position
{
NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo];
for (AVCaptureDevice *device in devices) {
if ([device position] == position) {
return device;
}
}
return nil;
}
- (AVCaptureDevice *) backFacingCamera
{
NSLog(@"back");
return [self cameraWithPosition:AVCaptureDevicePositionBack];
}
- (AVCaptureDevice *) frontFacingCamera
{
NSLog(@"front ");
return [self cameraWithPosition:AVCaptureDevicePositionFront];
}

@end
@implementation recordVideo (AVCaptureFileOutputRecordingDelegate)

- (void) captureOutput:(AVCaptureFileOutput *)captureOutput
didStartRecordingToOutputFileAtURL:(NSURL *)fileURL
fromConnections:(NSArray *)connections
{
NSLog(@"did start recording");

}

- (void) captureOutput:(AVCaptureFileOutput *)captureOutput
didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL
fromConnections:(NSArray *)connections
error:(NSError *)error
{
NSLog(@"did finish recording output file");


ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];

if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:outputFileURL])
{
[library writeVideoAtPathToSavedPhotosAlbum:outputFileURL
completionBlock:^(NSURL *assetURL, NSError *error){
if (error && [delegate respondsToSelector:@selector(assetLibraryError:forURL:)]) {
[delegate assetLibraryError:error forURL:assetURL];
}
}];
}
else {

}

[library release];


}
@end

最佳答案

  1. 您正在丢弃错误 - 如果这样做,您如何进行调试?

  2. 您需要更具体地说明正在发生/未发生的事情。调用了哪些方法? SDK 报告了哪些错误(如果有)?等等...

关于iphone - iPhone 4前置摄像头视频录制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030629/

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