[iOS Swift3.0/Oc] 摄像头实时获取视频流效果 简单记录
2016-12-05 15:49
579 查看
Oc参考贴: iOS从摄像头获得实时视频流
ios-深度解析二维码的生成与使用
Swift 3.0
1.创建 会话对象+输入对象+输出对象
为了能实时看到摄像机获取的视频图像,还要创建一个 预览图层(AVCaptureVideoPreviewLayer), 不然即使获取了摄像头对象,你也看不到拍摄的图//会话对象 (负责输入和输出设置之间的数据传递) private lazy var session : AVCaptureSession = AVCaptureSession() //输入设备 (摄像头) private lazy var deviceInput : AVCaptureInput? = { //获取摄像头 (默认设置后置摄像头) let device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo) do { //创建输入对象 let input = try AVCaptureDeviceInput.init(device: device) return input }catch{ print(error) return nil } }() //输入对象 private lazy var deviceOutPut : AVCaptureMetadataOutput = AVCaptureMetadataOutput() //创建预览图层 private lazy var previewLayer : AVCaptureVideoPreviewLayer = { let layer = AVCaptureVideoPreviewLayer.init(session: self.session) // 闭包要访问外界数据 要self layer?.frame = UIScreen.main.bounds return layer! }()
2. 将输入对象/输出对象 添加到session(会话)中
private func startScan(){ //1.判断能否将输入添加到会话中 if !session.canAddInput(deviceInput) { return } //2.判断能否将输出添加到会话中 if !session.canAddOutput(deviceOutPut) { return } //3.添加到会话中 session.addInput(deviceInput) session.addOutput(deviceOutPut) //4.设置输出能够解析的数据类型 (一定要在输出对象添加到会话之后才能设置,否则Bug) deviceOutPut.metadataObjectTypes = deviceOutPut.availableMetadataObjectTypes //设置系统所有的数据类型都能解析 //5.设置输出对象的代理 (只要解析成功就会通知代理) deviceOutPut.setMetadataObjectsDelegate(self, queue: DispatchQueue.main) //添加预览图层到底层 view.layer.insertSublayer(previewLayer, at: 0) //6.告诉session会话,开始扫描 session.startRunning() }
3. AVCaptureMetadataOutputObjectsDelegate 代理中处理数据
extension QRcodeViewController:AVCaptureMetadataOutputObjectsDelegate{ //只要解析到数据,就会调用 func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!) { guard let objc = metadataObjects.last as? AVMetadataMachineReadableCodeObject else { return } print(objc.stringValue) } }
相关文章推荐
- iOS Swift3.0实现视频播放横竖屏切换效果
- [IOS开发记录]ios10下使用Xcode8.2获取gps位置信息(swift3.0)
- Android获取摄像头视频帧并实时处理(转载)
- 环信iOS 简单集成3.0实时通话
- iOS 11获取设备名称 Swift 超简单
- iOS 简单的视频直播功能开发(实时视音频流录制编码+RTMP传输+实时拉流解码播放)
- OpenCV打开摄像头并获取实时视频图像代码
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包,swift 3.0
- 016最新iOS视频 小马哥十一期OC/Swift/HTML5/React Native视频
- iOS Swift3.0 UIWebView获取HTML(title,url,body...) stringByEvaluatingJavaScript
- OpenCV摄像头获取视频并实时保存每帧图片
- ios从相册:摄像头中获取视频
- iOS开发之OC与swift开发混编教程,代理的相互调用,block的实现。OC调用Swift中的代理, OC调用Swift中的Block 闭包,swift 3.0
- iOS 获取摄像头视频
- ios开发之Swift获取视频截图(本地视频、网络视频的缩略图)(转)
- iOS 使用 AVCaptureVideoDataOutputSampleBufferDelegate获取实时拍照的视频流
- swift 快速奔跑的兔几 本节的内容是:音频与视频 第一说 AVFoundation 以及简单的iOS视频app
- 利用FFmpeg+x264将iOS摄像头实时视频流编码为h264文件
- iOS 简单的视频直播功能开发(实时视音频流录制编码+RTMP传输+实时拉流解码播放)
- ios开发之Swift获取视频截图(本地视频、网络视频的缩略图)