【swift3.0】【一秒学会】【视频采集数据画面】(1)

贡献作者 -【XJDomain】
博客XJ:  https://my.oschina.net/shengbingli/blog
GitHubhttps://github.com/lishengbing/XJQRCodeToolDemo

 

第一讲:采集上

    01-视频采集

//
//  ViewController.swift
//  视频采集
//
//  Created by 李胜兵 on 2015/11/23.
//  Copyright © 2015年 付公司. All rights reserved.
//

import UIKit
import AVFoundation

class ViewController: UIViewController {
    fileprivate lazy var vedioQueue = DispatchQueue.global()
    fileprivate lazy var session : AVCaptureSession = AVCaptureSession()
    fileprivate lazy var previewLayer : AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.session)
    override func viewDidLoad() {
        super.viewDidLoad()
    }

}

// MARK: - 视频的开始采集和停止采集
extension ViewController {
    @IBAction func starCapture() {
        stopCapture()
        guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else {
            return
        }
        /* 获取摄像头设备方式1
        let device = devices.filter { (device : AVCaptureDevice) -> Bool in
           return device.position == .front
        }.first
        */
        // 获取摄像头设备方式2
        guard let device = devices.filter({$0.position == .back}).first else { return }
        guard let vedioInput = try? AVCaptureDeviceInput(device: device) else { return }
        if session.canAddInput(vedioInput) {
           session.addInput(vedioInput)
        }
        let vedioOutput = AVCaptureVideoDataOutput()
        vedioOutput.setSampleBufferDelegate(self, queue: vedioQueue)
        if session.canAddOutput(vedioOutput) {
           session.addOutput(vedioOutput)
        }
        previewLayer.frame = view.bounds
        view.layer.insertSublayer(previewLayer, at: 0)
        session.startRunning()
    }
    
    @IBAction func stopCapture() {
        session.stopRunning()
        previewLayer.removeFromSuperlayer()
    }
}


extension ViewController : AVCaptureVideoDataOutputSampleBufferDelegate {
    func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) {
        print("已经采集到画面")
    }
}

 

转载于:https://my.oschina.net/shengbingli/blog/792906

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值