Swift教程-视频拍摄教程

原文链接: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 available
    if UIImagePickerController.isSourceTypeAvailable(.Camera) {
        // 2 Present UIImagePickerController to take video
        controller.sourceType = .Camera
        controller.mediaTypes = [kUTTypeMovie as! String]
        controller.delegate = self
        controller.videoMaximumDuration = 10.0
        presentViewController(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 Library
    controller.sourceType = 
    UIImagePickerControllerSourceType.PhotoLibrary
    controller.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! String
                if stringType == kUTTypeMovie as! String {
                    let urlOfVideo = info[UIImagePickerControllerMediaURL] as? NSURL
                        if let url = urlOfVideo {
                            // 2  
                            assetsLibrary.writeVideoAtPathToSavedPhotosAlbum(url,
                                completionBlock: {(url: NSURL!, error: NSError!) in
                                    if let theError = error{
                                        println("Error saving video = \(theError)")
                                    }
                                    else {
                                        println("no errors happened")
                                    }
                                })
                        }
                } 
        }
    }
    // 3
    picker.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的代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,310评论 4 61
  • 转载自:https://github.com/Tim9Liu9/TimLiu-iOS[https://github...
    香橙柚子阅读 8,837评论 0 36
  • 电影《北京遇上西雅图之不二情书》让我对这本书产生了兴趣,某天去图书馆,无意间瞥见,一顺手就借了回来。 总体来说,精...
    Z小姐过的很好阅读 493评论 0 0
  • 第十一章:儿女情长自恩爱,秀儿闲话知根底 再说这阮氏陪着老夫人到得房里,就有丫鬟急忙送了茶水来。 阮氏忙服侍老夫人...
    烜荷公子阅读 592评论 0 5
  • 《我的前半生》最近热播,剧情一句话来描述就是一个家庭主妇遭遇丈夫外遇出轨离婚后重拾信心面对生活的都市现实情感剧。 ...
    ca_heeniem阅读 597评论 0 1