CocoaPods trunk is moving to be read-only. Read more on the blog, there are 17 months to go.
TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Aug 2017 |
Maintained by Samueler.
TYCamera对AVFoundation与视频、拍照相关的功能进行了封装,暴露了与实际开发中常用的API接口,方便开发者调用,并实现视频拼接功能以及移除对应下标的视频片段。开发者只要致力于拍照/视频录制相关的界面的搭建即可,提升开发效率。
TYCamera共有四个类组成:
a.TYCameraVC类:该类为TYCamera暴露的最外层的类,开发者继承该类进行相关界面布局;
b.TYRecordEngine类:该类是对AVFoundation视频、拍照相关功能的封装,并暴露相关的API,例如:闪光灯相关,切换摄像头相关等功能;
c.TYRecordEncoder类:该类是相机采集到相关数据后,使用AVAssetWriter将数据写入本地文件;
d.TYRecordHelper类:该类提供了一些工厂方法,例如:将视频转换为MP4格式,获取视频封面图(第一帧),将视频片段进行拼接整合等方法。
1.下载该项目,将项目中的Camera文件拖入项目中;
2.创建新的控制器继承TYCameraVC;
3.在需要跳入拍照/录制视频的位置使用工厂方法初始化控制器,并设置相关的参数
4.调用TYCameraVC暴露的相关接口开发界面逻辑
在此工程中,共包括两个Demo,一是拍摄照片,二是录制视频。此Demo是模仿新浪微博的摄像功能实现,但并未合并拍照以及录制视频功能,如需将拍照与录制视频功能写在一个控制器中,只需在初始化TYCameraVC时将recordType属性设置为TYCameraVCTypeBoth(默认为该属性)即可。
代码示例:
a.初始化TYCameraVC:
// 初始化拍照功能的控制器
TYTakePhotoVC *takePhotovc = [TYTakePhotoVC recordEngineSessionPreset:AVCaptureSessionPresetHigh
devicePosition:AVCaptureDevicePositionFront
recordType:TYCameraVCTypePhoto
previewFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.frame.size.height - 223.f)];
[self.navigationController pushViewController:takePhotovc animated:YES];
// 初始化录制视频功能控制器
TYTakeVideoVC *takeVideovc = [TYTakeVideoVC recordEngineSessionPreset:AVCaptureSessionPresetHigh
devicePosition:AVCaptureDevicePositionFront
recordType:TYCameraVCTypeVideo
previewFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.frame.size.height - 223.f)];
takeVideovc.minDuration = 3.f; // 设置录制视频的最短时长
takeVideovc.maxDuration = 15.f; // 设置录制视频的最长时长
[self.navigationController pushViewController:takeVideovc animated:YES];
// 初始化具有拍照功能和视频录制功能的控制器
TYCustomCameraVC *customCameravc = [TYCustomCameraVC recordEngineSessionPreset:AVCaptureSessionPresetHigh
devicePosition:AVCaptureDevicePositionFront
recordType:TYCameraVCTypeBoth
previewFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.frame.size.height - 223.f)];
[self.navigationController pushViewController:customCameravc animated:YES];
b.初始化完成后,界面逻辑相关的API已暴露在TYCameraVC.h中,请参照相关注释使用相应功能