'PBJVision' is an iOS camera engine that supports touch-to-record video and photo capture. It is compatible with both iOS 6 and iOS 7 and supports 64-bit. Pause and resume video capture is also possible without having to use a touch gesture as the sample project provides.
I created this component at DIY.org as a fun means for young people to author video. This same recording interaction was pioneered by Vine and also later adopted by Instagram.
If you need a video player, check out PBJVideoPlayer.
Please review the release history for more information. If you have questions or ideas, let me know! The github issues page is a great place to start a discussion but also allows others to benefit and chime in on the project too.
CocoaPods is the recommended method of installing PBJVision, just add the following line to your Podfile
:
pod 'PBJVision'
#import "PBJVision.h"
- (void)_setup
{
_longPressGestureRecognizer.enabled = YES;
PBJVision *vision = [PBJVision sharedInstance];
vision.delegate = self;
[vision setCameraMode:PBJCameraModeVideo];
[vision setCameraDevice:PBJCameraDeviceBack];
[vision setCameraOrientation:PBJCameraOrientationPortrait];
[vision setFocusMode:PBJFocusModeAutoFocus];
[vision startPreview];
}
- (void)_handleLongPressGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
{
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateBegan:
{
if (!_recording)
[[PBJVision sharedInstance] startVideoCapture];
else
[[PBJVision sharedInstance] resumeVideoCapture];
break;
}
case UIGestureRecognizerStateEnded:
case UIGestureRecognizerStateCancelled:
case UIGestureRecognizerStateFailed:
{
[[PBJVision sharedInstance] pauseVideoCapture];
break;
}
default:
break;
}
}
- (void)_handleDoneButton:(UIButton *)button
{
[self _endCapture];
}
- (void)vision:(PBJVision *)vision capturedVideo:(NSDictionary *)videoDict error:(NSError *)error
{
NSString *videoPath = [_currentVideo objectForKey:PBJVisionVideoPathKey];
[_assetLibrary writeVideoAtPathToSavedPhotosAlbum:[NSURL URLWithString:videoPath] completionBlock:^(NSURL *assetURL, NSError *error1) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Saved!" message: @"Saved to the camera roll."
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"OK", nil];
[alert show];
}];
}
PBJVision is available under the MIT license, see the LICENSE file for more information.