项目需求想在录像时为用户提供屏蔽声音的按钮(只录像不录声音),mediaTypes属性的可选值里面有一个kUTTypeVideo,有关它和kUTTypeMovie是这么说的:
一看很明显属性字典里放一个kUTTypeVideo就行了啊。结果一运行发现availableMediaTypesForSourceType方法中返回的只有image和movie两个选项,不管这些直接设置mediaTypes属性为KUTTypeVideo属性强行打开摄像机发现崩了。原因是'No available types for source 1'。想想也应该,,不过就是想试试看。
然后查看文档上面有关availableMediaTypesForSourceType方法有这么一段说明
好吧,只是说明用次方法和isSourceTypeAvailable方法结合判断是否支持录像并且告诉我们如何正确的进行录像,但是并没有特意提到KUTTypeVideo在这里为什么不行。stack上面找了半天有相关问题但是也没找到太满意的。
最后说一下最终结果,用KUTTypeMovie是正确的录像方式,但是注释中明明说的很清楚想要不包含音频可以用KUTTypeVideo,然而availableMediaTypes里根本不包含可用的。这一点始终没明白错在了哪里。
没办法,既然不能只单独录像那就换一种方式,点击按钮直接跳转到权限管理的页面让用户自己禁用掉麦克风的权限(如果用户录制视频时真的有想去掉声音的需求的话。。),这样录制出来的视频就没有声音了。还有比较好点的办法是不用UIImagePickerController改用AVFoundation来自定义相机,毕竟系统提供的会有很多限制,这样就可以实现只录制视频不收录音频。
网友评论