Swift基础

Swift基础--视频录制

2017-05-16  本文已影响268人  丿小七

参考:Swift - 视频录制教程1

参考:if we're in zhe real pre-commit handler...

Demo下载

建议真机调试

private let captureSession = AVCaptureSession()
private let videoDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)
private let audioDevice = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeAudio)
private let fileOutPut = AVCaptureMovieFileOutput()
let videoInput = try! AVCaptureDeviceInput(device: videoDevice)        
let audioInput = try! AVCaptureDeviceInput(device: audioDevice) 

captureSession.addInput(videoInput)
captureSession.addInput(audioInput)        
captureSession.addOutput(fileOutPut)
if let videoLayer = AVCaptureVideoPreviewLayer(session: captureSession) {
     videoLayer.frame = view.bounds
     videoLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
     view.layer.addSublayer(videoLayer)
}
fileOutPut.startRecording(toOutputFileURL: fileUrl, recordingDelegate: self)

fileOutPut.stopRecording()
func capture(_ captureOutput: AVCaptureFileOutput!, didStartRecordingToOutputFileAt fileURL: URL!, fromConnections connections: [Any]!) {
        print("StartRecording 开始")
}
    
func capture(_ captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAt outputFileURL: URL!, fromConnections connections: [Any]!, error: Error!) {
   var message:String!
   
   //将录制好的录像保存到照片库中
   PHPhotoLibrary.shared().performChanges({ 
        PHAssetChangeRequest.creationRequestForAssetFromVideo(atFileURL: outputFileURL)
   }) { (isSuccess:Bool, error:Error?) in
       if isSuccess {
           message = "保存成功"
       }else {
           message = "失败:\(String(describing: error?.localizedDescription))"
       }
       
       DispatchQueue.main.async {[weak self] in
           let alertVC = UIAlertController(title: message, message: nil, preferredStyle: .alert)
           let cancelAction = UIAlertAction(title: "sure", style: .cancel, handler: nil)
           alertVC.addAction(cancelAction)
           
           self?.present(alertVC, animated: true, completion: nil)
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读