Tag: avcapturesession

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: […]

UIScrollView显示相机

我创build了一个摄像头视图,通过创build一个AVCaptureVideoPreviewLayer来显示在屏幕上,现在我希望能够在我的滚动视图中显示。 目前我的滚动视图设置为处理UIImageViews而不是相机层。 这是如何一起工作的: //设置摄像头视图[self setCaptureManager:[[CaptureManager alloc] init]]; [[self captureManager] addVideoInput]; [[self captureManager] addVideoPreviewLayer]; CGRect layerRect = [[[self view] layer] bounds]; [[[self captureManager] previewLayer] setBounds:layerRect]; [[[self captureManager] previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect))]; [[[self view] layer] addSublayer:[[self captureManager] previewLayer]]; [[captureManager captureSession] startRunning]; int PageCount = 2; NSMutableArray *arrImageName =[[NSMutableArray alloc]initWithObjects:settingsView,captureManager,nil]; UIScrollView *scroller = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; […]

IOS将UIProgressView添加到AVFoundation AVCaptureMovieFileOutput

我正在使用AVCaptureMovieFileOutput来录制video,我想添加一个UIProgressView来表示在video停止录制之前还剩多less时间。 我设置了15秒的最大持续时间: CMTime maxDuration = CMTimeMakeWithSeconds(15, 50); [[self movieFileOutput] setMaxRecordedDuration:maxDuration]; 我似乎无法findAVCaptureMovieFileOutput是否有一个callback,当video正在录制或开始录制。 我的问题是,如何获得录制进度的更新? 或者,如果这不是可用的东西,我怎么能告诉开始录制开始计时器?

为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个。

如何解决iOS中的AVCaptureSession v AVAudioSession冲突?

我试图在视图控制器中运行一个AVCaptureSession,但在同一个,我也从一个库使用AVAudioSession调用一个函数。 我似乎无法从debugging器中获得更多的信息,除了当我调用这个特定的库函数时崩溃。 该库是libpd: https://github.com/libpd 它调用AVAudioSession作为sharedInstance。 我把libpd称为: [self.audioController configurePlaybackWithSampleRate:44100 numberChannels:2 inputEnabled:YES mixingEnabled:YES] 所以混合启用,但以防万一,我已经重新编译它,所以当它进入,我做: UInt32 doSetProperty = 1; AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(doSetProperty), &doSetProperty); 但是,没有运气。 将调用libpd移到视图控制器中的viewWillAppear也没有工作。 但是,如果我将调用libpd的代码从viewcontroller中取出,并将其放入didFinishLaunchingWithOptions中的应用程序委托中,则它将启动得很好,两个会话似乎并不会崩溃。 我是否缺less关于AVCaptureSession和混合的东西? 我如何去两个会议共存? 我没有使用AVCapture捕捉audio,只有相机input,所以我不应该能够以某种方式进行?

AVCaptureSession旋转| 定位同时传输video

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

AVCaptureSession模拟器中的audio

我试图捕捉audio,使用这个问题的方法; 与AVCaptureSession和AVCaptureAudioDataOutput。 这似乎工作正常1不便:它不起作用的模拟器。 AVAudioRecorder和老的SpeakHere演示程序都可以在模拟器中正常工作,使用MacBook Pro上的内置麦克风。 问题是[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]在模拟器中给出null ,所以随后的代码将失败,并显示消息(当它尝试将null作为input添加到AVCaptureSession时): *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Can't add <AVCaptureDeviceInput: 0x9138b40 [(null)]> because the device does not support AVCaptureSessionPresetHigh. Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].' 有没有一种简单的方法来获得这个在模拟器中工作?

iOS 8 iPad AVCaptureMovieFileOutput在录制13 – 14秒后丢失/丢失/从未获取音轨

我有以下代码适用于iOS 6和7.x. 在iOS 8.1中,我有一个奇怪的问题,如果您捕捉一个会话大约13秒或更长时间,则产生的AVAsset只有1个音轨(video),音轨不在那里。 如果录制的时间较短,则AVAsset有2个音轨(video和audio),如预期的那样。 我有足够的磁盘空间,应用程序有权使用相机和麦克风。 我用最less的代码创build了一个新项目,它重现了这个问题。 任何想法将不胜感激。 #import "ViewController.h" @interface ViewController () @end @implementation ViewController { enum RecordingState { Recording, Stopped }; enum RecordingState recordingState; AVCaptureSession *session; AVCaptureMovieFileOutput *output; AVPlayer *player; AVPlayerLayer *playerLayer; bool audioGranted; } – (void)viewDidLoad { [super viewDidLoad]; [self setupAV]; recordingState = Stopped; } -(void)setupAV { session = [[AVCaptureSession alloc] init]; […]

CALayer – 放置在storyboard UIButton下面的子图层?

我有几个UIButtons在我的故事板中有一个视图控制器。 其中一个激活一个显示在子图层中的AVFoundation相机预览图层: captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; captureVideoPreviewLayer.frame = self.view.bounds; [self.view.layer addSublayer:captureVideoPreviewLayer]; 这个工作正常,除了预览层被渲染在我的button之上,所以即使button仍然是可点击的,它们不能被用户看到。 有一个简单的方法来放置button下面的子图层? 或者一个简单的方法来提升图层中的button? 非常感谢!

setPreferredHardwareSampleRate不起作用

我正在使用可以在这里find的代码。 我试图改变采样率使用: [[AVAudioSession sharedInstance] setPreferredHardwareSampleRate:SAMPLE_RATE error:nil]; 在SoundRecoder.m文件的init函数里面。 (SAMPLE_RATE是16000.0) 当我检查文件时,它似乎仍然是元数据说采样率是44100,我也试过使用(如这里所build议的): AudioSessionSetProperty ( kAudioSessionProperty_PreferredHardwareSampleRate ,sizeof(F64sampleRate) , &F64sampleRate ); 当F64sampleRate是16000但仍然相同的故障。 设备是否可以select采样率(它被称为首选),有什么办法可以设置它吗? 任何想法解决这个代码问题将有所帮助。 谢谢! 更新:我认为这个问题与队列本身有关。 因为采样率有44100。 这是我的整个代码基于我已经链接到更早的代码: #import "SoundRecoder.h" #import <AVFoundation/AVFoundation.h> #import <FLAC/all.h> #define SAMPLE_RATE 16000.0 // Sample rate I want the Flac file to have @interface SoundRecoder () <AVCaptureAudioDataOutputSampleBufferDelegate>{ AVCaptureSession *_session; int _frameIndex; BOOL _ready; int _sampleRate; int […]