美文网首页程序员
调用系统录制并成功保存到相册--Swift

调用系统录制并成功保存到相册--Swift

作者: bce67c19184f | 来源:发表于2016-01-10 03:48 被阅读1663次

    效果图:

    Untitled.gif

    这次直接上效果图,不然大家也不知道具体乱糟糟的代码是什么鬼。

    首先项目需要这两个: AVFoundationimport 和 MobileCoreServices

    1、先实例化一个按钮,这个就不用贴代码了吧。
    2、然后初始化摄像机以及设置参数:

    func initImagePicker(){

        imagePicker = UIImagePickerController()
        //设置imagePicker的来源,这里设置为摄像头
        imagePicker.sourceType = .Camera
        //设置为后摄像头
        imagePicker.cameraDevice = .Rear
        //设置摄像头的类型(录像)
        imagePicker.mediaTypes = [String(kUTTypeMovie)]
        //设置摄像头捕获模式
        imagePicker.cameraCaptureMode = .Video
        //是否允许编辑
        imagePicker.allowsEditing = true
        //设置摄像头的质量(高清)
        imagePicker.videoQuality = .TypeIFrame1280x720
        //设置代理检测操作
        imagePicker.delegate = self
    }
    

    3、完成代理和设置保存路径:

    extension ViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
    //完成回调
    func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
    let url = info[UIImagePickerControllerMediaURL] as! NSURL
    let urlStr = url.path
    if UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(urlStr!) {
    //保存视频到相簿,注意也可以使用ALAssetsLibrary来保存
    UISaveVideoAtPathToSavedPhotosAlbum(urlStr!, self, "video:didFinishSavingWithError:contextInfo:", nil)
    print("保存成功......")
    }
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Phone) {
    self.dismissViewControllerAnimated(true, completion: nil)
    }
    }

    func imagePickerControllerDidCancel(picker: UIImagePickerController) {
        print("取消录制")
        if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.Phone) {
            self.dismissViewControllerAnimated(true, completion: nil)
        }
    }
    

    }

    func video(videoPath: String, didFinishSavingWithError error: NSError, contextInfo info: AnyObject) {
    print("保存成功")
    let url = NSURL(fileURLWithPath: videoPath)
    player = AVPlayer(URL: url)
    let playerLayer = AVPlayerLayer(layer: player)
    playerLayer.frame = imageView.bounds
    imageView.layer.addSublayer(playerLayer)
    player.play()
    }

    最近在学习多媒体后续还会写一些例子,大家多多指点。

    自学笔记、谨慎阅读。

    相关文章

      网友评论

        本文标题:调用系统录制并成功保存到相册--Swift

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