有时候我们的App需要一些录像的功能,那么这个时候如果我们自己直接调用系统录像Api显得很麻烦,需要考虑的点多,难度变大。所以除非是需要特别定制,不然一般情况下使用系统提供给我们的录像的UIImagePickerController就够了(当然它也可以拍照),它是一个封装了完整视频捕获管线和相机 UI 的ViewController。
好了,接下来进入正题;
1、要录像首先要检查一下,你的设备是否支持录像,现在的设备基本都是支持的,先判断数据输入源(摄像头)是否可用,再取的输入源支持的多媒体格式,最后判断是否支持录像。
2、既然要使用UIImagePickerController录像,那么肯定需要事先对它进行实例化,实例化UIImagePickerController,设置输入源,设置输入类型,设置代理(用于录制结束或者录制取消时候通知到对应的代理)。
3、设置前后摄像头,既然是录像,那么有些需求可能就是需要使用前摄像头,先判断前摄像头是否可用,设置的话设置前摄像头为UIImagePickerController的录像设备。
4、和Android的只能系统相机UI不同,iOS可以自定义相机UI,哈哈哈!UIImagePickerController设置为不显示默认UI,然后再设置自定义UI,最后给自定义UI设置点击事件,操作方法具体可以从UIImagePickerController的头文件查看,这里我就只截图开始和停止录像方法。
5、录像的视频质量,你可以设置UIImagePickerController的videoQuality属性,视频质量描述如上图所示。
6、录制结束后,处理视频。UIImagePickerController提供了2个代理方法一个是录制成功的代理方法,拿到录制的视频后可以保存到相册,或者保存到沙盒里面。一个是用户取消录制的代理方法,这个要实现什么都是要根据具体需求去实现。然后2个代理方法都要记得关掉UIImagePickerController。UIImagePickerController通过设置基本上可以满足需求,如果无法满足需求的话可以考虑直接调用更加底层的相机API。
如果你觉得我的这篇文章对你有一丁点儿作用的话,那么希望你能在下方给个赞哈,让我知道这文章已经起了它应该的作用,谢谢!
参考资料 http://objccn.io/issue-23-1/