PBJVision 快速在应用中集成相机/拍摄功能

PBJVision

简介

PBJVision, 是一个iOS相机操作的封装库,可以让你的应用快速简单地继承相机相关功能.

项目主页: PBJVision

最新示例:点击下载

注意: 示例需要在真机上运行,保存的视频在 tmp文件夹,可通过 ifunbox等第三方工具查看.

快速入门

安装

通过 CocoaPods 安装

pod ‘PBJVision‘

使用

导入头文件.

#import "PBJVision.h"

使用 [[PBJVision sharedInstance] previewLayer] 初始化相机预览视图.

    // 预览视图和视频图层.
    _previewView = [[UIView alloc] initWithFrame:CGRectZero];
    _previewView.backgroundColor = [UIColor blackColor];
    CGRect previewFrame = CGRectMake(0, 60.0f, CGRectGetWidth(self.view.frame), CGRectGetWidth(self.view.frame));
    _previewView.frame = previewFrame;
    _previewLayer = [[PBJVision sharedInstance] previewLayer];
    _previewLayer.frame = _previewView.bounds;
    _previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [_previewView.layer addSublayer:_previewLayer];

初始化并配置PBJVision控制器,然后开始使用相机预览功能.

- (void)_setup
{
    _longPressGestureRecognizer.enabled = YES;

    PBJVision *vision = [PBJVision sharedInstance];
    vision.delegate = self;
    vision.cameraMode = PBJCameraModeVideo;
    vision.cameraOrientation = PBJCameraOrientationPortrait;
    vision.focusMode = PBJFocusModeContinuousAutoFocus;
    vision.outputFormat = PBJOutputFormatSquare;

    [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;
    }
}

结束录制.

    [[PBJVision sharedInstance] endVideoCapture];

处理最终的视频输出或相应地错误.

- (void)vision:(PBJVision *)vision capturedVideo:(NSDictionary *)videoDict error:(NSError *)error
{
    if (error && [error.domain isEqual:PBJVisionErrorDomain] && error.code == PBJVisionErrorCancelled) {
        NSLog(@"退出录制");
        return;
    } else if (error) {
        NSLog(@"视频录制时发生错误 (%@)", error);
        return;
    }

    _currentVideo = videoDict;

    NSString *videoPath = [_currentVideo  objectForKey:PBJVisionVideoPathKey];
    [_assetLibrary writeVideoAtPathToSavedPhotosAlbum:[NSURL URLWithString:videoPath] completionBlock:^(NSURL *assetURL, NSError *error1) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"视频已保存!" message: @"保存到缓存目录tmp中."
                                                       delegate:self
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"好", nil];
        [alert show];
    }];
}

设置 `PBJVision`控制器的属性可以设置最大视频录制时间:

    [[PBJVision sharedInstance] setMaximumCaptureDuration:CMTimeMakeWithSeconds(5, 600)]; // 最多5秒.

可以通过  PBJVision 控制器的属性来设置视频的质量和压缩比特率.

    @property (nonatomic, copy) NSString *captureSessionPreset;

    @property (nonatomic) CGFloat videoBitRate;
    @property (nonatomic) NSInteger audioBitRate;
    @property (nonatomic) NSDictionary *additionalCompressionProperties;
时间: 2024-10-31 14:09:34

PBJVision 快速在应用中集成相机/拍摄功能的相关文章

怎么在我们的App中集成条码扫描功能?

现在很多App都有条码扫描功能,有的手机比如某米在照相机中集成了条码扫描功能,但是还有一部分手机没有这样的集成,比如韩国某星,需要自己下载一个条码扫描App.今天我们就来看看怎么在自己的App中集成一个条码扫描的功能. 本文源码下载地址http://download.csdn.net/detail/u012702547/9101419 先来看张效果图: 自己开发一个条码扫描显然是非常不现实的,我们可以使用GitHub上的开源控件ZXing来实现这样一个功能. 使用ZXing当然要先下载:http

如何在ios中集成微信登录功能

在ios中集成微信的登录功能有两种方法 1 用微信原生的api来做,这样做的好处就是轻量级,程序负重小,在Build Settings 中这样设置 然后设置 友盟的设置同上,但是要注意,加入你需要的所有框架到应用程序中

度量快速开发平台中集成登录CS程序的思路设想

大家知道,度量快速开发平台中,集成登录其他BS系统,是已经提供好了集成接口.可以参考"度量第三方Web系统集成登录实现"这一篇文章.如果使用单位还想集成登录现有单位的客户端程序,该怎么办呢?度量快速开发平台中,提供了一个打开本地文件的方法: 使用示例: OpenFile("C:\Windows\notepad.exe")如果要集成进来的第三方CS程序,安装的目录都在同一个位置,直接把OpenFile里面的文件路径换成确定的即可.总所周知,客户端文件有个很大的特点,即

Unity利用Cinemachine快速创建游戏中的相机系统

https://connect.unity.com/p/li-yong-cinemachinekuai-su-chuang-jian-you-xi-zhong-de-xiang-ji-xi-tong 原文地址:https://www.cnblogs.com/sanyejun/p/12245123.html

如何在通用权限管理系统中集成log4net日志功能

开发人员都知道,在系统运行中要记录各种日志,自己写一个日志功能,无论是在效率还是功能扩展上来说都不是很好,目前大多用的是第三方的日志系统,其中一个非常有名,用的最多的就是log4net.下面是关于这个组件的介绍 ”Log4net是基于.net开发的一款非常著名的记录日志开源组件.最早是2001年7月由NeoWorks Limited启动的项目,基本的框架源, 于另外的一个非常著名的姐妹组件-log4j.现由Apache组织开发与维护.此日志架构是可灵活扩展,且通过配置文件来设置日志的属性及输出,

在程序中集成发邮件功能

<?php require_once("class.phpmailer.php"); /*发送邮件*/ function sendMail($to, $subject, $message) { $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = "smtp.qq.com"; $mail->SMTPAuth = true; $mail->Username = "[ema

SpringSide集成支付宝支付功能

网络购物很流行,那么最流行的支付手段估计应该是支付宝了,那么怎么样将支付宝集成到自己的环境中呢,今天我来讲一下如何在springside框架中集成支付宝支付功能. 首先,我们去支付宝商家服务页面去注册和申请支付功能,并在那里下载sdk开发包https://b.alipay.com/order/productDetail.htm?productId=2012111200373124,这个是支付宝的即时到账收款功能,然后下面有一个流程的介绍,我们选择下面的技术集成,先下载sdk开发包,下载完成之后解

Android调用相机拍摄照片并显示到 ImageView控件中

在前面的一篇文章中曾介绍过简单的开启相机照相功能,详见?Android简单调用相机Camera功能,实现打开照相功能?,这一次就会将前面拍摄的照片显示到ImageView中,形成一个完整的效果 看实例 MainActivity.java package com.example.camera; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphic

用 jpush-react-native 插件快速集成推送功能(Android 篇)

概述 jpush-react-native 是极光推送官方开发的 React Native 版本插件,可以快速集成推送功能.现在最新版本的 JPush SDK 分离了 JPush 及 JCore,让开发者可以分开集成 JMessage 及 JPush(以前 JMessage 包含了 JPush).下面就来具体说一下如何快速集成以及使用 jpush-react-native 插件. 安装 打开终端,进入项目文件夹,执行以下命令: npm install jcore-react-native --s