iOS视频采集(一)
2016-11-12 16:29
218 查看
// // ViewController.swift // videocapture // // Created by targetcloud on 2016/11/12. // Copyright © 2016年 targetcloud. All rights reserved. // import UIKit import AVFoundation class ViewController: UIViewController { fileprivate lazy var videoQueue = DispatchQueue.global() // fileprivate var session : AVCaptureSession? fileprivate lazy var session : AVCaptureSession = AVCaptureSession() fileprivate lazy var previewLayer : AVCaptureVideoPreviewLayer = AVCaptureVideoPreviewLayer(session: self.session) override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } // @IBOutlet weak var a: UIButton! override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func startCapture(_ sender: Any) { // let session = AVCaptureSession() // self.session = session guard let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo) as? [AVCaptureDevice] else { print("摄像头不可用"); print("------>>>>>>>>>>>><<<<<<<<<<<<<<<------") return } // let device = devices.filter(<#T##isIncluded: (AVCaptureDevice) throws -> Bool##(AVCaptureDevice) throws -> Bool#>) guard let device = devices.filter({$0.position == .front}).first else {return}//$0表示闭包的第一个参数 /* let device = devices.filter { (device : AVCaptureDevice) -> Bool in return device.position == .front }.first */ /* var device : AVCaptureDevice! for d in devices{ if d.position == .front{ device = d break } } */ guard let videoInput = try? AVCaptureDeviceInput(device: device) else {return} session.addInput(videoInput) let videoOutput = AVCaptureVideoDataOutput() videoOutput.setSampleBufferDelegate(self, queue:videoQueue) session.addOutput(videoOutput) // let previewLayer = AVCaptureVideoPreviewLayer(session: session) // previewLayer?.frame = view.bounds // view.layer.addSublayer(previewLayer!) previewLayer.frame = view.bounds // view.layer.addSublayer(previewLayer) view.layer.insertSublayer(previewLayer, at: 0) session.startRunning() } @IBAction func endCapture(_ sender: Any) { session.stopRunning() previewLayer.removeFromSuperlayer() } } extension ViewController : AVCaptureVideoDataOutputSampleBufferDelegate{ func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, from connection: AVCaptureConnection!) { print("采集画面"); print("------>>>>>>>>>>>><<<<<<<<<<<<<<<------") } }
相关文章推荐
- iOS RTMP 视频直播开发笔记(1) – 采集摄像头图像
- iOS RTMP 视频直播开发笔记(1) – 采集摄像头图像
- iOS - 采集音视频及写入文件
- iOS:自定义图片/视频/音频采集播放,相册,图片编辑
- iOS-音视频采集 by GPUImage
- iphone ios 视频采集AVCaptureSessionPresetHigh/Medium/Low分辨率等参数
- iOS 1.音视频采集
- ios直播技术(1)-- 视频采集
- iOS 音视频采集 AVCaptureSession
- iOS RTMP 视频直播开发笔记(1)----- 采集摄像头图像
- 【iOS开发】关于视频直播技术,你想要知道的都在这里了(一)采集
- ios视频和音频采集
- WeBRTC IOS视频采集流程
- ios视频直播(视频采集---推流篇)
- iOS 对网络视频采集视频截图
- iOS直播技术分享-音视频采集(一)
- iOS视频采集(三)
- iOS GPUImage音视频采集以及美颜功能
- 小码哥iOS--玩转【斗鱼直播APP】系列之采集视频
- iOS 音视频采集以及写入文件(swift)