1
我想在UIView中顯示攝像頭的飼料。後來我需要能夠分析視頻幀,所以我需要使用AVFoundation來做到這一點,據我所知。使用AVFoundation在UIView中顯示攝像頭飼料
我有什麼至今:
import UIKit
import AVFoundation
class ViewController: UIViewController {
@IBOutlet weak var camView: UIView!
var captureSession:AVCaptureSession?
var videoPreviewLayer:AVCaptureVideoPreviewLayer?
var videoCaptureDevice: AVCaptureDevice?
var input: AnyObject?
override func viewDidLoad() {
super.viewDidLoad()
videoCaptureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
do {
input = try AVCaptureDeviceInput(device: videoCaptureDevice)
} catch {
print("video device error")
}
captureSession = AVCaptureSession()
captureSession?.addInput(input as! AVCaptureInput)
videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill
videoPreviewLayer?.frame = camView.layer.bounds
captureSession?.startRunning()
}
}
的camView
是可見的,但它並沒有顯示任何東西。
該應用程序要求在第一次運行時使用相機的權限,並且已被授予該權限。
設置斷點並檢查captureSession
,videoPreviewLayer
,videoCaptureDevice
和input
確認它們已全部設置。
什麼ü指由camView是可見的,但它並沒有顯示任何東西。 ?相機沒有顯示在camView中?在viewDidAppear中啓動相機不在viewDidload中。 –
將captureSession?.startRunning()行移入viewDidAppear。 –
@TejaNandamuri在'camView'上設置背景色可以確認該視圖實際上是在屏幕上 - 它只是不顯示攝像頭供稿。將'captureSession?.starRunning()'移動到'viewDidAppear'沒有區別。 – henrikstroem