Swift   发布时间:2022-04-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在使用Swift录制视频时,我做错了什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 swift中用AVFoundation录制视频,但是我没有看到file.mp4.我不知道我是否正在录音而且我保存不好或者我没有录音..因为我可以显示会话预览,所有组件都能正常运行..我的代码是:

import UIKit
 import AVFoundation

 class ViewController: UIViewController,AVCaptureFiLeoutputRecordingDelegate {
 var delegate : AVCaptureFiLeoutputRecordingDelegate?
 @IBOutlet var imageView : UIImageView
 @IBOutlet var imagePreview : UIView

var session : AVCaptureSession!
var fiLeoutput : AVCaptureMovieFiLeoutput!
var previewLayer : AVCaptureVideoPreviewLayer!

func initCamera() -> Bool {
 var cameraBACk : AVCaptureDevice?
    var videoIn : AVCaptureDeviceInput

    var devices : NSArray = AVCaptureDevice.devices()
    for device: AnyObject in devices{
        if Device.position == AVCaptureDevicePosition.BACk{
            cameraBACk = device as? AVCaptureDevice
        }
    }
 delegate=self
  var error : NSErrorPointer!
    var deviceInput : AVCaptureInput =      AVCaptureDeviceInput.deviceInputWithDevice(cameraBACk,error: error) as AVCaptureInput

 self.session=AVCaptureSession()
    self.session.addInput(deviceInput as AVCaptureInput)

    self.fiLeoutput = AVCaptureMovieFiLeoutput()
    self.session.addOutput(self.fiLeoutput)
 var previewLayer: AVCaptureVideoPreviewLayer =     AVCaptureVideoPreviewLayer.layerWithSession(self.session) as AVCaptureVideoPreviewLayer
    previewLayer.frame = self.imagePreview.bounds
    self.imagePreview.layer.addSublayer(previewLayer)

    self.session.startRunning()

 return true
}


  @IBACtion func stop(sender : UIButton) {
    println("Stop")
    self.fiLeoutput.stopRecording()
}

  @IBACtion func record(sender : UIButton) {

    var formatter: NSDateFormatter = NSDateFormatter()
    formatter.dateFormat = "yyyy-MM-dd-HH-mm-ss"
    let datetiR_300_11845@ePrefix: String = formatter.StringFromDate(NSDate())

        let paths = NSSearchPathForDirectoriesInDomains(
            .DocumentDirectory,.UserDomainMask,truE)

        let documentsDirectory = paths[0] as String

        var filePath:string? = nil
        var filenamePostfix = 0
        do {
            filePath =
            "\(documentsDirectory)/\(datetiR_300_11845@ePrefiX)-\(filenamePostfix++).mp4"
        } while (NSFileManager.defaultManager().fileExistsAtPath(filePath))
    self.fiLeoutput.startRecordingToOutputFileURL(filePath,recordingDelegate: delegatE)

   override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view,typically from a nib.
    self.initCamera()
}


func captureOutput(captureOutput: AVCaptureFiLeoutput!,didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!,fromConnections connections: AnyObject[]!,error: NSError!){
    recording=true
}

func captureOutput(captureOutput: AVCaptureFiLeoutput!,didStartRecordingToOutputFileAtURL fileURL: NSURL!,fromConnections connections: AnyObject[]!) {
    recording=false

  }

有什么显着的错误,我看不到?

谢谢!!

解决方法

AVCaptureFiLeoutput -startRecordingToOutputFileURL采用NSURl.在发布的代码中,传递的参数filePath是一个String.请尝试使用NSURL(String:filePath).

大佬总结

以上是大佬教程为你收集整理的在使用Swift录制视频时,我做错了什么?全部内容,希望文章能够帮你解决在使用Swift录制视频时,我做错了什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。