Tag: avcapturedevice

如何在Swift 2中切换到前置摄像头?

我有我的ViewDidAppear所有这些代码 captureSession = AVCaptureSession() // let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) var captureDevice:AVCaptureDevice! = nil if (camera == CameraType.Front) { let videoDevices = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) for device in videoDevices{ let device = device as! AVCaptureDevice if device.position == AVCaptureDevicePosition.Front { captureDevice = device break } } } else { captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) } do { let input = […]

AVCaptureVideoPreviewLayer(相机预览)冻结/卡住移动到后台和后退

不能把这一个出来。 一切正常,当应用程序处于活动状态, 有时当我将应用程序移动到背景(按主页button),而不是返回时,预览图层冻结/卡住。 我使用viewWillAppear和viewDidAppear进行设置。 这是我如何设置一切: var backCamera = AVCaptureDevice.devicesWithMediaType(AVMediaTypeVideo) var global_device : AVCaptureDevice! var captureSession: AVCaptureSession? override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) captureSession = AVCaptureSession() captureSession!.sessionPreset = AVCaptureSessionPresetPhoto CorrectPosition = AVCaptureDevicePosition.Back for device in backCamera { if device.position == AVCaptureDevicePosition.Back { global_device = device as! AVCaptureDevice CorrectPosition = AVCaptureDevicePosition.Back break } } configureCamera() var error: […]

为AVCaptureSession设置一个自定义的AVFrameRateRange

我试图每秒用AVCaptureSession 5张图片,我不知道我明白什么AVFrameRange的意思。 目前我有一些设置设备的代码: AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 并尝试将activeVideoMinFrameDuration和activeVideoMaxFrameDuration为CMTimeMake(1, 5)的自定义值。 苹果告诉我,我只能使用他们提供的AVFrameRanges之一。 当我NSLogged他们,我得到(2,30),(2,60),和(2,24)。 我首先想知道这是什么意思? 这是相机将运行的帧速率还是捕捉帧的间隔(即,我正在尝试做什么)? 如果不是的话,我可以怎样在sampleBufferDelegate方法上每秒保存5帧? 目前它给了我每一个框架,因为每一次都有一个框架调用这个方法,所以我只需要一些指示我如何每秒只能抓取5个。

AVCaptureSession旋转| 定位同时传输video

我正在开发videostream应用程序,在这个应用程序中,我需要捕获前置摄像头的video帧并进行编码然后转移到另一端,典型的stream程就是这样 AVCaptureSession – > AVCaptureDeviceInput – > AVCaptureVideoDataOutput – >捕获帧 – >编码帧 – >发送帧到另一端, 它工作正常,我已经设置了kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange作为帧格式。 也预览图层被用来显示预览, 问题出现在设备方向得到改变,如果设备从纵向移动到风景,然后在另一端帧旋转90,我期待,因为方向在预览层支持,所以我会自动接收旋转的缓冲区在捕获callback,但是看起来像,预览层只显示捕获的缓冲区的预览和UI缓冲区的缓冲区,而在另一端,我会得到咆哮的缓冲区, 所以我想知道,是否有任何configuration,使其发生变化,或者我需要旋转/变换缓冲区的Capture缓冲区中的callback。

防止AVCaptureVideoPreviewLayer旋转,但允许UI层以方向旋转

我有两个视图控制器。 一个是根VC,包含录制button等UI界面。 在这个视图控制器上,我还显示另一个VC在索引0的视图。此视图包含一个AVCaptureVideoPreviewLayer。 我想我的摄像机模仿苹果video摄像头的应用程序,其中界面布局与旋转调整,但video预览层没有。 您可以看到股票video应用程序中的录制计时器(UILabel)如何消失,并根据方向重新显示在顶部。 任何想法如何做到这一点? 我发现一个build议,build议将预览添加到应用程序委托的窗口,因为它不符合导航控制器的旋转,但它不适用于我。 谢谢!

iOS 5 – AVCaptureDevice设置对焦点和对焦模式冻结现场摄像头图像

我使用以下方法来设置从iOS 4开始的焦点: – (void) focusAtPoint:(CGPoint)point { AVCaptureDevice *device = [[self captureInput] device]; NSError *error; if ([device isFocusModeSupported:AVCaptureFocusModeAutoFocus] && [device isFocusPointOfInterestSupported]) { if ([device lockForConfiguration:&error]) { [device setFocusPointOfInterest:point]; [device setFocusMode:AVCaptureFocusModeAutoFocus]; [device unlockForConfiguration]; } else { NSLog(@"Error: %@", error); } } } 在iOS 4设备上,这个工作没有任何问题。 但在iOS 5上,实时摄像机馈送冻结,几秒钟后完全变黑。 没有exception或错误抛出。 如果我注释掉setFocusPointOfInterest或setFocusMode,则错误不会发生。 所以他们的组合都会导致这种行为。

如何在不使用预设的情况下在iOS上录制video?

在iOS上录制video更简单的方法是设置AVCaptureSession.sessionPreset 。 但是,这并不适合我,因为我想控制像binning,稳定(电影,标准,或无)和ISO参数。 我find了我想要的格式并将其分配给activeFormat ,但是当我尝试开始录制时,出现错误: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[AVCaptureMovieFileOutput startRecordingToOutputFileURL:recordingDelegate:] No active/enabled connections' 这是我的初始化代码: let device = AVCaptureDevice.defaultDevice( withDeviceType: .builtInWideAngleCamera, mediaType: AVMediaTypeVideo, position: .back)! let session = AVCaptureSession() session.addInput(try! AVCaptureDeviceInput(device: device)) output = AVCaptureMovieFileOutput() session.addOutput(output) device.setFormatWithHighestIso() session.startRunning() setFormatWithHighestIso()被定义为: extension AVCaptureDevice { var goodVideoFormats: [AVCaptureDeviceFormat] { return (formats as! [AVCaptureDeviceFormat]) […]

iPhone 4 AVFoundation:同时捕捉前后相机

我想知道是否有可能使用AVFoundation框架同时捕获两个摄像头。 具体来说,我的问题是前后AVCaptureDevices是否可以同时活动。 目前我知道一个AVCaptureSession实例只能支持一个input(和输出)。 我创build了两个AVCaptureSessions,将前置摄像头设备连接到另一个,然后将会话的输出指向不同的SampleBufferDelegate函数。 我所看到的是一个委托function是活动几帧,然后另一个接pipe。 看起来好像AVFoundation以某种方式closures相机设备,如果另一个正在使用。 任何人都可以证实这一点,或分享他们在这个问题上的经 提前致谢

iOS:captureOutput:didOutputSampleBuffer:fromConnection不被调用

我想从AVCaptureSession的实时反馈中提取帧,我正在使用Apple的AVCam作为testing用例。 这里是AVCam的链接: https://developer.apple.com/library/ios/samplecode/AVCam/Introduction/Intro.html 我发现captureOutput:didOutputSampleBuffer:fromConnection不被调用,我想知道为什么或者我在做什么错误。 这是我所做的: (1)我使AVCamViewController成为一个委托 @interface AVCamViewController () <AVCaptureFileOutputRecordingDelegate, AVCaptureVideoDataOutputSampleBufferDelegate> (2)我创build了一个AVCaptureVideoDataOutput对象并将其添加到会话中 AVCaptureVideoDataOutput *videoDataOutput = [[AVCaptureVideoDataOutput alloc] init]; if ([session canAddOutput:videoDataOutput]) { [session addOutput:videoDataOutput]; } (3)我添加了委托方法,并通过logging随机string来testing – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { NSLog(@"I am called"); } testing应用程序工作,但captureOutput:didOutputSampleBuffer:fromConnection不被调用。 (4)我在SO上读到AVCaptureSession *session = [[AVCaptureSession alloc] init];中的会话variablesAVCaptureSession *session = [[AVCaptureSession alloc] init]; 在viewDidLoad中是本地的,这是委托没有被调用的一个可能的原因,我把它作为AVCamViewController类的一个实例variables,但它没有被调用。 这里是我正在testing的viewDidLoad方法(取自AVCam),我添加AVCaptureDataOutput方法的结尾: – (void)viewDidLoad { [super […]

AVCaptureSession取消背景audio

每当我开始一个运行麦克风的AVCaptureSession作为input时,它将取消当前正在运行的任何背景音乐(例如iPod音乐)。 如果我将添加audioinput的行注释掉,背景audio会继续。 有谁知道用麦克风录制video剪辑的方法,同时继续播放背景audio? 我查了很多,似乎无法find任何引用此行为。 谢谢你的帮助!