BDCamera 是一个简单的基于 AVFoundation 的视频和照片相机。
platform :ios, '7.0'
pod "BDCamera", "~> 0.1"
将 BDCamera 文件夹拖到您的项目中。这个库必须启用 ARC。
首先导入照片类
#import "BDStillImageCamera.h"
或视频类
#import "BDCamera.h"
为您的相机设置属性
@property (nonatomic, strong) BDStillImageCamera *camera;
// or
@property (nonatomic, strong) BDCamera *camera;
然后,您需要在控制器中一个 UIView 容器用于相机预览层。
UIView *cameraView = [[UIView alloc] initWithFrame:self.view.bounds];
self.camera = [[BDStillImageCamera alloc] initWithPreviewView:self preset:AVCaptureSessionPresetPhoto];
//or
self.camera = [[BDCamera alloc] initWithPreviewView:self preset:AVCaptureSessionPreset1280x720];
[self.camera startCameraCapture];
[self.view addSubview:cameraView];
拍照
[self.camera captureImageWithCompletion:^(UIImage *capturedImage, NSError *error) {
// your captured image
}];
视频相机有一个委托,它会为您的录像视频提供一个 URL。您需要为相机设置 videoDelegate。
self.camera.videoDelegate = self;
开始录制视频
NSURL *movieURL = //url for video output file
self.camera startRecordingWithURL:movieURL];
停止录制
[self.camera stopRecording];
视频输出将在 videoDelegate 中发送
- (void)didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL error:(NSError *)error
{
// here you can save your recorded video to Photos, for example.
ALAssetsLibrary *assetLibrary = [[ALAssetsLibrary alloc] init];
[assetLibrary writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) {
[[NSFileManager defaultManager] removeItemAtURL:url error:nil];
[self showSuccessAlert];
}];
}
使用 BDCamera 的示例包括在示例项目中。
您可以通过切换输出 FPS 来录制慢动作视频。iPhone 5 的最大 FPS 为 60。iPhone 5S 的最大 FPS 为 120。iPhone 5S:使用 BDCamera 通过 AVCaptureMovieFileOutput 录制视频,您可以在相册中控制您的慢动作视频。
[self.camera switchFPS:120.f];
BDCamera 有实时预览的功能。
/*
Every item in this array should be BDLivePreview for render live preview
*/
@property (nonatomic, strong) NSMutableArray *displayedPreviews;
BDLivePreview 是 GLKView 的一个子类。您可以使用 videoCamera EAGLContext 创建 BDLivePreview。
//You need to enable sample buffer capturing
[self.camera captureSampleBuffer:YES];
// then create preview views
CGRect frame = //some frame
BDLivePreview *preview = [[BDLivePreview alloc] initWithFrame:frame context:self.camera.eaglContext];
self.camera.displayedPreviews addObject:preview];
[self.view addSubview:preview];
就这样。我已经在 9 个实时预览上测试了 BDCamera。
BDCamera 在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。