效果:
1.视频录制
功能说明:
- 视频录制,可设置录制的最长时间,和最短时间
- 可保存视频封面图(中间帧)和视频(.MP4)到相册
- 视频路径,视频大小、封面的路径会打印出来
- 进度条是用定时器写的
- 可切换摄像头
- 视频录制完成后会自动播放,播放模式为:竖屏录制时:高16:宽9 、横屏录制时高9 :宽16 (判定模式为点击录制的那一瞬间手机旋转的状态)
使用:
#import "VideoRecordManager.h"
- (void)viewDidLoad {
[super viewDidLoad];
self.manager = [[VideoRecordManager alloc] initWithSuperView:self.backView];
self.manager.delegate = self;
}
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//打开相机
[self.manager openVideo];
}
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
//关闭相机
[self.manager closeVideo];
}
提供的方法:
/**
开启摄像头
*/
- (void)openVideo;
/**
关闭摄像头
*/
- (void)closeVideo;
/**
切换摄像头
*/
- (void)exchangeCamera;
/**
开始录像
*/
- (void)startVideoRecord;
/**
停止录像
*/
- (void)stopVideoRecord;
/**
删除录像
*/
- (void)deleteVideoRecord;
/**
获取视频数据路径
@param callback 回调
- (void)getVideoAndThumbnailPathWithBlock:(void (^)(NSString *videoPath , NSString *thumbnailPath))callback;
*/
@protocol VideoRecordManagerDelegate <NSObject>
@optional;
/**
视频录制过短回调
@param manager self
*/
- (void)recordTimerTooShort:(VideoRecordManager *)manager;
/**
录制视频时间达到限制
@param manager self
*/
- (void)recordTimerEnd:(VideoRecordManager *)manager;
/**
录制进度改变
@param progress progress(0 ~ 1)
*/
- (void)recordProgressChange:(CGFloat)progress;
2.系统拍照:
功能说明:
- 拍照的
AVCaptureVideoPreviewLayer
大小为 4 : 3,根据需求自行修改~ - 在拍照前监听手机旋转的状态,横拍完成后会旋转过来.
使用:
#import "ERCameraManager.h"
/**
初始化
@param superView 父视图
@return self
*/
- (instancetype)initWithSuperView:(UIView *)superView;
/**
开启摄像
*/
- (void)openVideo;
/**
关闭摄像
*/
- (void)closeVideo;
/**
拍照
*/
- (void)takePicture;
/**
取消
*/
- (void)cannel;
/**
切换摄像头
*/
- (void)exchangeCamera;
/**
获取原图
@return image
*/
- (UIImage *)getOriginalImage;
Demo
GitHub - ERVideoRecord 喜欢请给个Star ~ 感谢~
关于视频录制核心代码我参考的是PKShortVideo并修改添加了一些方法,在此引用膜拜大神