美文网首页
视频录制

视频录制

作者: 流星大石头 | 来源:发表于2016-04-23 13:07 被阅读135次
视频录制需要导入AVFoundation框架,视频录制的基本步骤:

<1>创建视频、音频设备
<2>指定视频、音频设备为输入设备
<3>创建视频文件输出对象
<4>创建会话对象
<5>通过会话对象关联输入和输出
<6>创建特殊的Layer,添加到self.view.layer,用来展示捕捉到的画面,可以自定义这个Layer,自定义录制界面
<7>开启会话
<8>开始录制
<9>停止录制

#import@interface ViewController ()
/**

*  视频输入设备

*/

@property (nonatomic,strong) AVCaptureDeviceInput* inputPicture;

/**

*  音频输入设备

*/

@property (nonatomic,strong) AVCaptureDeviceInput* inputAudio;

/**

*  输出

*/

@property (nonatomic,strong) AVCaptureMovieFileOutput* output;

/**

*  会话 关联输如输出

*/

@property (nonatomic,strong) AVCaptureSession* session;

/**

*  特殊的Layer,用来 展示录制的画面,可以自定义这个画面,展示自定义的录制界面

*/

@property (nonatomic,strong) AVCaptureVideoPreviewLayer* preLayer;

@property (nonatomic,strong) UIButton* recordButton;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//1. 创建视频、音频设备

AVCaptureDevice* inputPicture = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];

AVCaptureDevice* inputAudio = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];

//2.指定视频、音频设备为输入设备

self.inputPicture = [AVCaptureDeviceInput deviceInputWithDevice:inputPicture error:nil];

self.inputAudio = [AVCaptureDeviceInput deviceInputWithDevice:inputAudio error:nil];

//3. 创建视频文件输出

self.output = [[AVCaptureMovieFileOutput alloc] init];

//4. 创建会话,

self.session = [[AVCaptureSession alloc] init];

//5. 关联输入输出设备

if ([self.session canAddInput:self.inputAudio]) {

[self.session addInput:self.inputAudio];

}

if([self.session canAddInput:self.inputPicture]){

[self.session addInput:self.inputPicture];

}

if([self.session canAddOutput:self.output]) {

[self.session addOutput:self.output];

}

//6. 创建特殊的Layer添加到view的layer上面,展示捕捉到的画面,可以自定Layer,定制录制时的画面

self.preLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.session];

self.preLayer.frame = self.view.bounds;

[self.view.layer addSublayer:self.preLayer];

//7. 开启会话

[self.session startRunning];

self.recordButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];

self.recordButton.center = CGPointMake([UIScreen mainScreen].bounds.size.width/2,[UIScreen mainScreen].bounds.size.height-100);

self.recordButton.titleLabel.font = [UIFont systemFontOfSize:25];

[self.recordButton setTitle:@"录 制" forState:UIControlStateNormal];

[self.recordButton setTitle:@"暂 停" forState:UIControlStateSelected];

[self.recordButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

[self.view addSubview:self.recordButton];

[self.recordButton addTarget:self action:@selector(recordVideo) forControlEvents:UIControlEventTouchUpInside];

}

- (void)recordVideo{

//9. 停止录制

if ([self.output isRecording]) {

self.recordButton.selected = NO;

[self.output stopRecording];

}

else {

//8. 开始录制

self.recordButton.selected = YES;

NSString* path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject] stringByAppendingPathComponent:@"hel.mp4"];

[self.output startRecordingToOutputFileURL:[NSURL fileURLWithPath:path] recordingDelegate:self];

}

}

- (void)captureOutput:(AVCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL fromConnections:(NSArray *)connections error:(NSError *)error {

NSLog(@"已经录制完成");

}

相关文章

  • 专业正版一键解锁,不要太爽,低调使用...

    录制视频是一个很常见的需求,比如给别人录制操作步骤,做B站等视频平台需要录制视频,录制网课等教学课程,录制游戏视频...

  • 《录制视频》

    讲师四期翟冲【原创】分享第604天2018.08.29今天我们几个伙伴一块录制视频,完成幸福家第三阶的作业。因为昨...

  • 视频录制

    https://www.jianshu.com/p/fe00883ad3d2https://www.jianshu...

  • 视频录制

    视频录制需要导入AVFoundation框架,视频录制的基本步骤: <1>创建视频、音频设备<2>指定视频、音频设...

  • 视频录制

    本篇来自 **WizardDragon **的投稿,分享了他对于四大组件启动时一些方法的调用顺序的研究结果,并且深...

  • 视频录制

    最终诉求? 拍摄、保存、播放、上传。就这四个步骤,当然首先拍摄就有许许多多的优化小功能,切换摄像头、单击跳帧焦距、...

  • 视频录制

    视频录制控件布局文件就是一个surfaceView attrs文件

  • 视频录制

    视频录制上传步骤 登陆平台,查看题目 复制链接到浏览器,建议在谷歌浏览器打开: http://www.baichu...

  • 录制视频

    【幸福老师 李秀清 坚持原创分享 第215天 20190714 星期日】 今晚,我在家里自拍《少年中国说》...

  • <录制视频>

    人生第一次通过视频录制软件为自己最近做的一个项目进行视频的录制。 视频录制需要简单介绍软件的功能,同时不能出错...

网友评论

      本文标题:视频录制

      本文链接:https://www.haomeiwen.com/subject/zhnxrttx.html