在使用Swift录制视频时,我做错了什么?
发布时间:2020-12-14 04:40:59 所属栏目:百科 来源:网络整理
导读:我在 swift中用AVFoundation录制视频,但是我没有看到file.mp4.我不知道我是否正在录音而且我保存不好或者我没有录音..因为我可以显示会话预览,所有组件都能正常运行..我的代码是: import UIKit import AVFoundation class ViewController: UIViewController
我在
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 dateTimePrefix: 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)/(dateTimePrefix)-(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).
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |