AVCaptureDevice拍照与短视频

这篇博客介绍了如何利用AVCaptureDevice在iOS应用中实现实时拍照和录制短视频的功能。通过设置AVCaptureStillImageOutput和输出设置,将设备输入和输出添加到捕获会话,并捕获静止图像。当视频连接可用时,获取JPEG格式的图像数据并转化为UIImage显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UIControlEventTouchDown];

    [self.takeButton addTarget:self action:@selector(endAction:) forControlEvents:UIControlEventTouchUpInside];


#pragma mark 视频时间少于10s松开发送
-(void)endAction:(UIButton *)sender
{
    
    AVCaptureStillImageOutput *stillImageOutput = [[AVCaptureStillImageOutput alloc]init];
    NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:AVVideoCodecJPEG, AVVideoCodecKey, nil];
    
    [stillImageOutput setOutputSettings:outputSettings];
    
    
    
    if ([self.captureSession canAddInput:self.captureDeviceInput]) {
        
        [self.captureSession addInput:self.captureDeviceInput];
        
    }
    
    
    
    if ([self.captureSession canAddOutput:stillImageOutput]) {
        
        [self.captureSession addOutput:stillImageOutput];
        
    }
    
    AVCaptureConnection *videoConnection = [stillImageOutput connectionWithMediaType:AVMediaTypeVideo];
    
    if (!videoConnection) {
        
        return;
        
    }
    [stillImageOutput captureStillImageAsynchronouslyFromConnection:videoConnection completionHandler:^(CMSampleBufferRef imageDataSampleBuffer, NSError *error) {
        
        if (imageDataSampleBuffer == NULL) {
            
            return;
            
        }
        
        
        
        NSData *imageData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];
        
        UIImage *image = [UIImage imageWithData:imageData];
        
        NSLog(@"image size = %@", NSStringFromCGSize(image.size));
        
        
        
        UIImageView *imageV = [[UIImageView alloc]initWithFrame:(CGRectMake(100, 100, 200, 400))];
        imageV.image = image;
        imageV.backgroundColor = [UIColor lightGrayColor];
        [self.view addSubview:imageV];
        
    }];
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值