原文链接:Take Video Tutorial in iOS8 with Swift
原文日期:2015/07/09

译者:lfb_CD
校对:numbbbbb
定稿:shanks

苹果公司提供了UIimagePickerController-这是一个使用 iOS 设备内置的摄像头来拍摄视频的可视化界面。在此教程中,我们将拍摄一段保存到手机相册的视频。教程运行在 iOS 8.4 和 Xcode 6.4 下。

打开 Xcode 并创建一个new Single View Application,项目名称为IOS8SwiftTakeVideoPlayerTutorial,接着填上你的Organization NameOrganization Identifier,选择 Swift 语言,在设备一栏只选择 iPhone。

打开Storyboard,然后在主视图中拖入两个按钮,并分别设置两个buttontitleTake VideoView Library。之后你的故事板内容应该像下面这样:

按住 Control键 并选中两个按钮,点击故事板右下角的Resolve Auto Layout Issues按钮(就是右下角那个三角形按钮),选择Add Missing Constraints

打开Assistant Editor(关联面板),并确保ViewController.swift文件是打开着的。按住 Control键,把第一个按钮拖出到ViewController.swift文件中,并创建下面的Action

按住 Control键,把第二个按钮拖出到ViewController.swift文件,并创建下面的Action

打开ViewController.swfit文件,并在文件顶部添加下面代码:

import MobileCoreServices
import AssetsLibrary

修改ViewController类的声明:

class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate {

ViewController类中需要实现UIImagePickerController的代理方法。实现takeVideo方法:

@IBAction func takeVideo(sender: AnyObject) {// 1 Check if project runs on a device with camera availableif UIImagePickerController.isSourceTypeAvailable(.Camera) {// 2 Present UIImagePickerController to take videocontroller.sourceType = .Cameracontroller.mediaTypes = [kUTTypeMovie as! String]controller.delegate = selfcontroller.videoMaximumDuration = 10.0presentViewController(controller, animated: true, completion: nil)}else {println("Camera is not available")}
}
  1. isSourceTypeAvailable用来检测设备是否支持拍摄视频。
  2. ImagePickerController的数据可以是CameraMovie(图片和视频)两种类型。视频的maximum(拍摄视频的最长时间)长度设置为10秒。

实现 viewLibrary方法:

@IBAction func viewLibrary(sender: AnyObject) {// Display Photo Librarycontroller.sourceType = UIImagePickerControllerSourceType.PhotoLibrarycontroller.mediaTypes = [kUTTypeMovie as! String]controller.delegate = self  presentViewController(controller, animated: true, completion: nil)}

点击按钮就会打开相册。如果mediaType没有被设置为视频类型,那么视频文件就不会显示,只会显示图片资源。下面实现UIImagePickerControllerDelegate

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject: AnyObject]) {// 1    let mediaType:AnyObject? = info[UIImagePickerControllerMediaType]if let type:AnyObject = mediaType {if type is String {let stringType = type as! Stringif stringType == kUTTypeMovie as! String {let urlOfVideo = info[UIImagePickerControllerMediaURL] as? NSURLif let url = urlOfVideo {// 2  assetsLibrary.writeVideoAtPathToSavedPhotosAlbum(url,completionBlock: {(url: NSURL!, error: NSError!) inif let theError = error{println("Error saving video = \(theError)")}else {println("no errors happened")}})}} }}// 3picker.dismissViewControllerAnimated(true, completion: nil)
}

imagePickerController(_:didFinishPickingMediaWithInfo:)方法告诉代理,用户选择了一段视频。info参数包含了选中的视频的URL数据

  1. 字典数据类型的infomediatype参数可用于检测参数是否是movie类型。如果是就提取视频的URL
  2. writeVideoAtPathToSavedPhotosAlbum方法会把视频保存到手机相册中
  3. ViewController视图消失

实现imagePickerControllerDidCancel方法:

func imagePickerControllerDidCancel(picker: UIImagePickerController) {picker.dismissViewControllerAnimated(true, completion: nil)
}

当用户点击Cancel按钮时,View Controller视图就会消失掉。如果模拟器没有视频文件,请在真实的设备上编译并运行这个项目。选择”Take Video“拍摄一段视频并选择”Use Video“,接着选择”View Library“,视频就会保存到手机相册中了。

你可以在Github上下载IOS8SwiftTakeVideoPlayerTutorial的代码

Swift教程-视频拍摄教程相关推荐

  1. Swift - 视频录制教程3(设置拍摄窗口大小,录制正方形视频)

    在之前的两篇文章中,我介绍了如何通过  AVFoundation.framework 框架提供的  AVCaptureSession 类来实现视频的录制.以及通过  AVMutableComposit ...

  2. 苹果Swift语言中文教程资源汇总

    苹果swift语言中文教程(零)搭配环境以及代码运行成功http://vjiazhi.com/kaifa/1014.html 苹果Swift语言中文教程(一)基础数据类型 http://vjiazhi ...

  3. swift 雨燕 新手教程

    Apple Swift编程语言新手教程 chox 2014-06-03 文件夹 简单介绍 入门 简单值 控制流 函数与闭包 对象与类 枚举与结构 1   简单介绍 今天凌晨Apple刚刚公布了Swif ...

  4. 苹果Swift编程语言入门教程【中文版】

    Swift代码语言教程:在刚刚过去的WWDC2014大会上,苹果公司新发布了一种编程语言Swift.据悉,Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题,对于广 ...

  5. 戴维营教育-Swift语言中文教程和配套视频教程更新中

    戴维营教育-Swift语言中文教程更新中 http://blog.diveinedu.net/category/ios_8_development/ 戴维营教育-Swift语言的github翻译项目地 ...

  6. 【运营小卖部】短视频剪辑,短视频拍摄教程,直播教程

    短视频玩法教程,抖音热门玩法教程-行业报告文档类资源-CSDN下载短视频玩法教程,抖音热门玩法教程更多下载资源.学习资料请访问CSDN下载频道.https://download.csdn.net/do ...

  7. Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide

    Caleb Pike索尼A7 III视频指南DSLR视频拍摄教程 中文字幕 Sony A7 III Video Guide 原文地址:https://www.aeziyuan.com/t-20771. ...

  8. iOS开发Swift语言学习教程-欧阳坚-专题视频课程

    iOS开发Swift语言学习教程-16345人已学习 课程介绍         Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...

  9. swift编程语言基础教程 中文版

    swift编程语言基础教程 中文版 http://download.csdn.net/detail/u014036026/7845491

最新文章

  1. 判断jQuery库是否被正确引入
  2. LeetCode——Longest Substring Without Repeating Characters
  3. php 注册树,php常用设计模式(单例,工厂,注册树模式)
  4. android菜单展开收起,展开、收起状态栏 - Android社区 - https://www.androidos.net.cn/
  5. Selenium两万字大题库
  6. cpython vm_【协程原理】 - cPython的VM真变态
  7. 使用DBUtils实现增删改查
  8. Android学习入门
  9. 读入外挂:ios::sync_with_stdio(false)
  10. 使用mbedtls库实现ftps协议
  11. java 一年有多少周_Java8根据一年中的第几周获得Monday
  12. 最新2022中国大学排名发布!
  13. python计算器基础知识_Python基础知识+计算器练习
  14. 决策树 基于python实现ID3,C4.5,CART算法
  15. 为地震死去的孩子们而作(转载)
  16. 第七届全国计算机大赛作品,常熟理工学院新闻网
  17. 理解图像卷积操作的意义
  18. 项目管理实践篇(二):总结项目经历
  19. 保存准考证电脑快捷键
  20. 如何快速申请软件著作权,教你避坑!!!

热门文章

  1. 通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core? 转自:https://www.cnblogs.com/1996V/p/9037603.html#net1...
  2. CNC五轴编程的全面总结
  3. 你有没有为自己拼过命?
  4. 【论文总结】Incremental Learning of Object Detectors without Catastrophic Forgetting(附翻译)
  5. 一篇关于大黄蜂的鸡汤文的杂想
  6. java 判断两个经纬度差异_计算两个经纬度点的实际距离
  7. uni-app 杂记
  8. [组图]国外专家谈游戏制作
  9. 开发APP的java工具_app傻瓜式开发工具_app开发工具
  10. [机器学习与scikit-learn-15]:算法-决策树-分类问题代码详解