小编Gri*_*neh的帖子

具有多个输出的AVCaptureSession?

我目前正在开发一个iOS应用程序,它将CoreImage应用于相机提要以拍摄照片和视频,而且我遇到了一些障碍.

到目前为止,我一直在使用AVCaptureVideoDataOutput获取样本缓冲区并使用CoreImage对其进行操作,然后显示简单的预览,并使用它来捕获照片并保存它们.

当我尝试实现视频录制时,通过在从AVCaptureVideoDataOutput接收视频时将SampleBuffers写入视频,它的帧速率非常慢(可能是因为正在进行的其他图像相关处理).

所以我想知道,AVCaptureVideoDataOutput和AVCaptureMoveFileOutput可以同时在同一个AVCaptureSession上运行吗?

我快速给了它,发现当我添加额外输出时,我的AVCaptureVideoDataOutput停止接收信息.

如果我能让它工作,我希望这意味着我可以简单地使用第二个输出以高帧率录制视频,并在用户停止录制后对视频进行后期处理.

任何帮助将不胜感激.

avfoundation ios avcapturesession

22
推荐指数
1
解决办法
5134
查看次数

OpenCV cvFindContours - 如何分离轮廓的组件

我一直在玩OpenCV,并且有很多试验和错误已经设法学习如何检测照片中的圆圈(硬币).一切都很好,除非我直接将硬币放在一起(如下所示,忽略了第二张图像倒置的事实).

原始照片 找到轮廓

看起来因为硬币是如此接近,cvFindContours认为它们是同一个对象.我的问题是如何将这些轮廓分成单独的对象,或者获得已经分离的轮廓列表.

我用于cvFindContours的参数是:

cvFindContours( img, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0) );
Run Code Online (Sandbox Code Playgroud)

任何帮助或建议将不胜感激.

c geometry opencv image-processing object-detection

13
推荐指数
1
解决办法
3万
查看次数

iOS从.mov文件中提取音频

我一直试图从.mov文件中提取音频一段时间,我似乎无法让它工作.具体来说,我需要提取音频并将其保存为.aif或.aiff文件.

我尝试使用AVMutableComposition,并将mov文件作为AVAsset加载.在最终使用AVAssetExportSession(将输出文件类型设置为AVFileTypeAIFF,这是我需要它的格式)之前,仅将音轨添加到AVMutableComposition,将文件写入aif.

我收到一个错误,说这个输出文件类型无效,我不确定为什么:

*由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'输出文件类型无效'

AVAssetExportSession *exporter;
exporter = [[AVAssetExportSession alloc] initWithAsset:composition presetName:AVAssetExportPresetHighestQuality] ;

exporter.audioMix = audioMix;
exporter.outputURL=[NSURL fileURLWithPath:filePath];
exporter.outputFileType=AVFileTypeAIFF;    //Error occurs on this line
Run Code Online (Sandbox Code Playgroud)

我不确定上述方法是否有效,但我可能会认为我只是做错了.但是,如果有人知道另一种方法来实现我想要实现的目标,那么任何帮助都会非常感激.

如果需要,我可以发布更详细的代码,但目前我正在尝试其他一些方法,所以现在它有点乱.

谢谢您的帮助!

audio extract avfoundation mov ios

8
推荐指数
2
解决办法
6133
查看次数

如何在iOS 5中为CIAffineTransform设置inputTransform

我一直在寻找答案,但没找到任何东西.我正在尝试使用iOS 5 Beta的CIAffineTransform,并遇到了一个问题.文档说'inputTransform'属性接受NSAffineTransform,但据我所知,没有办法在iOS中实例化其中一个,我所做的所有研究都告诉我这个特定的类适用于MacOS(正确的我)如果我错了)

如果是这样,那么我将什么值放入inputTransform?

这里有一些简单的代码来解释我想要实现的目标.

CIImage* result = "Some CIImage";


CIFilter* filter = [CIFilter filterWithName:@"CIAffineTransform"];
[filter setValue:result forKey:kCIInputImageKey];

[filter setValue:transform forKey:@"inputTransform"]; //What type/class of value do I set here if I can't use an NSAffineTransform

result = [filter outputImage];
Run Code Online (Sandbox Code Playgroud)

任何帮助都将被大大改编.

core-graphics core-image ios

8
推荐指数
1
解决办法
4710
查看次数

iOS:在附加到AVAssetWriterInput之前裁剪CMSampleBufferRef

我目前正在尝试使用CoreImage,学习如何将CIFilters应用于相机Feed.目前我已经成功地拍摄了相机,应用过滤器并以视频的形式将Feed写入AVAssetWriter,但我遇到的一个问题是,在过滤过程中,我实际裁剪了图像数据所以它总是有方形尺寸(项目的其他方面需要)

我的流程如下:

  1. 使用AVCaptureSession捕获Feed
  2. 从捕获输出中获取CMSampleBufferRef并获取CVPixelBufferRef
  3. 获取CVPixelBufferRef的基地址,并使用基地址作为其数据创建CGBitmapContext(因此我们可以覆盖它)
  4. 将CVPixelBufferRef转换为CIImage(使用其中一个CIImage构造函数)
  5. 将过滤器应用于CIImage
  6. 将CIImage转换为CGImageRef
  7. 将CGImageRef绘制到CGBitmapContext(导致样本缓冲区内容被覆盖)
  8. 将CMSampleBufferRef附加到AVAssetWriterInput.

没有将CGImageRef绘制到上下文中,这就是我得到的:

在此输入图像描述

在将CGImageRef绘制到上下文之后,这就是我得到的:

在此输入图像描述

理想情况下,我只想告诉CMSampleBufferRef它有新的维度,以便省略附加信息.但我想知道我是否必须完全创建一个新的CMSampleBufferRef.

任何帮助将不胜感激!

core-graphics avfoundation core-video ios avassetwriter

7
推荐指数
0
解决办法
1448
查看次数