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

被折叠的 条评论
为什么被折叠?



