Tag: avfoundation

使用AVCaptureMetadataOutput和AVFoundation扫描条形码

我使用AVFoundation和AVCaptureMetadataOutput来扫描iOS7中的QR条形码,我提出了一个视图控制器,允许用户扫描条形码。 它工作正常,即。 正在扫描条形码,我可以输出条形码string到控制台。 但它一遍又一遍的扫描,看屏幕截图。 我想要它做的只是扫描条形码一次,然后dismissViewController。 这是我的委托方法的代码: – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputMetadataObjects:(NSArray *)metadataObjects fromConnection:(AVCaptureConnection *)connection { CGRect highlightViewRect = CGRectZero; AVMetadataMachineReadableCodeObject *barCodeObject; NSString *detectionString = nil; NSArray *barCodeTypes = @[AVMetadataObjectTypeUPCECode, AVMetadataObjectTypeCode39Code, AVMetadataObjectTypeCode39Mod43Code, AVMetadataObjectTypeEAN13Code, AVMetadataObjectTypeEAN8Code, AVMetadataObjectTypeCode93Code, AVMetadataObjectTypeCode128Code, AVMetadataObjectTypePDF417Code, AVMetadataObjectTypeQRCode, AVMetadataObjectTypeAztecCode]; for (AVMetadataObject *metadata in metadataObjects) { for (NSString *type in barCodeTypes) { if ([metadata.type isEqualToString:type]) { barCodeObject = […]

如何使用swift监视ios上的audioinput – 示例?

我想写一个简单的应用程序,当麦克风的声级达到一定水平时,“做些什么”,显示audioinput级别的额外功劳 不能在swift中find任何这样的例子 – 不想logging,只是监视 已经检查了AVFoundation类的文档,但不能离开地面 谢谢

CMSampleBufferSetDataBufferFromAudioBufferList返回错误12731

我试图捕捉应用程序的声音,并将其传递给AVAssetWriter作为input。 我设置audio单元的callback来获得AudioBufferList。 问题开始于将AudioBufferList转换为CMSampleBufferRef。 它始终返回错误-12731,表示所需参数丢失 谢谢 卡罗尔 -(OSStatus) recordingCallbackWithRef:(void*)inRefCon flags:(AudioUnitRenderActionFlags*)flags timeStamp:(const AudioTimeStamp*)timeStamp busNumber:(UInt32)busNumber framesNumber:(UInt32)numberOfFrames data:(AudioBufferList*)data { AudioBufferList bufferList; bufferList.mNumberBuffers = 1; bufferList.mBuffers[0].mData = NULL; OSStatus status; status = AudioUnitRender(audioUnit, flags, timeStamp, busNumber, numberOfFrames, &bufferList); [self checkOSStatus:status]; AudioStreamBasicDescription audioFormat; // Describe format audioFormat.mSampleRate = 44100.00; audioFormat.mFormatID = kAudioFormatLinearPCM; audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; audioFormat.mFramesPerPacket = 1; audioFormat.mChannelsPerFrame […]

如何使用AVFoundation在audioinput源(蓝牙,内置麦克风)之间切换

目前,我在内置麦克风和蓝牙麦克风iOS8之间切换audioinput源时遇到了麻烦 我试图find在线解决scheme,但没有得到:( 任何人,请告诉我适当的方式来实现。 期待您的帮助!

在uitableview单元格中播放video

我正在尝试设置一个可以播放video的UITableView。 很多关于这个使用MPMoviePlayer的问题( 在UITableView中播放video,在SWIFT中播放video在UItableView中 播放video,在UITableView中播放video ),这在iOS 9中已经被弃用了。使用AVFoundation的less数人之一),是这样的: 在UITableViewCell播放video时,它是完全可见的,并且是我从中获取大部分代码的地方。 这里是我的代码,在cellForRowAtIndexPath: VideoCell *videoCell = (VideoCell *)[self.tableView dequeueReusableCellWithIdentifier:@"VideoCell"]; dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul); NSURL *url = [[NSURL alloc] initWithString:urlString]; dispatch_async(queue, ^{ videoCell.item = [AVPlayerItem playerItemWithURL:url]; dispatch_sync(dispatch_get_main_queue(), ^{ videoCell.player = [[AVPlayer alloc] initWithPlayerItem:videoCell.item]; videoCell.player.actionAtItemEnd = AVPlayerActionAtItemEndNone; AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:videoCell.player]; playerLayer.frame = CGRectMake(0, 0, videoCell.contentView.frame.size.width, videoCell.contentView.frame.size.height); [videoCell.contentView.layer addSublayer:playerLayer]; playerLayer.videoGravity […]

方法captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer :( CMSampleBufferRef)sampleBuffer fromConnection只调用了几次

我从外部蓝牙麦克风捕捉audio。 但是我不能logging任何东西。 这个方法在当前AvCaptureSession的开始只调用一次。 – (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection 之后,我从来没有把这个方法叫做处理audio。 为了实例化捕获会话,我这样做: self.captureSession.usesApplicationAudioSession = true; self.captureSession.automaticallyConfiguresApplicationAudioSession = true; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord withOptions:AVAudioSessionCategoryOptionAllowBluetooth error:nil]; /* Audio */ AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]; audioIn = [[AVCaptureDeviceInput alloc] initWithDevice:audioDevice error:nil]; if ( [_captureSession canAddInput:audioIn] ) { [_captureSession addInput:audioIn]; } [audioIn release]; audioOut = [[AVCaptureAudioDataOutput alloc] init]; // Put audio […]

裁剪AVAssetvideo与AVFoundation不工作的iOS 8

这一直在困扰着我的最后一天,我曾经在ObjC中使用这种方法将video裁剪成方块,这似乎是我在几年内发现的唯一方法,但在最近试图裁剪后使用它Swift和iOS 8似乎并没有裁剪video,希望有人可以帮忙? func captureOutput(captureOutput: AVCaptureFileOutput!, didFinishRecordingToOutputFileAtURL outputFileURL: NSURL!, fromConnections connections: [AnyObject]!, error: NSError!) { if error != nil { println("Error Outputting recording") } else { self.writeVideoToAssetsLibrary(self.outputUrl!.copy() as NSURL) } } func writeVideoToAssetsLibrary(videoUrl: NSURL) { var videoAsset: AVAsset = AVAsset.assetWithURL(videoUrl) as AVAsset var clipVideoTrack = videoAsset.tracksWithMediaType(AVMediaTypeVideo).first as AVAssetTrack var composition = AVMutableComposition() composition.addMutableTrackWithMediaType(AVMediaTypeVideo, preferredTrackID: CMPersistentTrackID()) var […]

切换访问相机和照片时发生崩溃

我有一个收集视图(标准stream布局),其中第一个单元格显示实时摄像头,其余单元格使用iOS 8的新Photos Framework显示来自用户库的照片。 一切都呈现和工作很好。 第一次打开时,系统会提示您按照预期访问相机和照片库。 我的应用程序行为正常,如果我select是或否的提示中的任何一个。 但是,如果我背景的应用程序,进入设置>隐私>照片|相机和切换访问,我的应用程序崩溃。 当连接到Xcode,我没有得到任何反馈,为什么应用程序崩溃。 不幸的是, 苹果的照片框架示例应用程序做同样的事情。 我怎样才能防止这种情况发生? 我已经订阅了AVCaptureDeviceWasConnectedNotification , AVCaptureDeviceWasDisconnectedNotification和registerChangeObserver在PHPhotoLibrary上的PHPhotoLibrary但那些似乎永远不会被调用。 再次,这里是使用苹果的示例应用程序和模拟器的步骤: 在模拟器中,进入设置>常规>重置>重置位置和隐私 运行应用程序 允许该应用访问您的照片库 背景示例应用程序和打开设置 转到隐私>照片并closures设置 观看Xcode崩溃 在步骤3中,如果您拒绝访问您的照片,并在步骤5中启用访问权限,则应用程序也会崩溃。

如何在AVFoundation中循环播放video,而不会有不必要的暂停?

我正试图播放无限期循环的video剪辑。 我按照苹果公司的build议来做这件事。 通过设置由AVPlayerItemDidPlayToEndTimeNotification触发的通知: @property(nonatomic) AVPlayer *videoPlayer; @property(nonatomic) AVPlayerItem *videoPlayerItem; -(void)loadVideo { NSURL *url = [[NSBundle mainBundle] URLForResource:filename withExtension:extension]; AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil]; NSString *tracksKey = @"tracks"; [asset loadValuesAsynchronouslyForKeys:@[tracksKey] completionHandler: ^{ dispatch_async(dispatch_get_main_queue(), ^{ NSError *error; AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error]; if (status == AVKeyValueStatusLoaded) { [self setVideoPlayerItem:[AVPlayerItem playerItemWithAsset:asset]]; [videoPlayerItem addObserver:self forKeyPath:@"status" options:0 context:&ItemStatusContext]; […]

处理AVAsset中的所有帧

我正在尝试通过AVAsset中的每个帧,并将每个帧处理为一个图像。 我无法从我的search中find任何东西。 我试图完成的任务看起来像伪代码 for each frame in asset take the frame as an image and convert to a cvMat Process and store data of center points Store center points in array 我不知道该怎么写这个伪代码的唯一部分是通过每个帧,并捕获它在一个图像。 谁能帮忙?