草庐IT

ios - AVCaptureDevice:比较样本缓冲区时间戳

我有一个视频AVCaptureDevice(AVMediaTypeVideo),我正在使用setExposureTargetBias:completionHandler暂时减少曝光,然后再次恢复它。我需要确切地知道captureOutput:didOutputSampleBuffer:fromConnection:中的哪个缓冲区对应于曝光减少的第一帧。文档说:该block收到一个时间戳,该时间戳与应用该设置的第一个缓冲区的时间戳相匹配。时间戳与设备时钟同步,因此在与通过AVCaptureVideoDataOutput实例传送的缓冲区时间戳进行比较之前,必须将其转换为主时钟。https:

iphone - 使用 AudioQueue 服务播放 MP3 数据缓冲区 : Prime failed (-50)

这几天我一直在努力寻找在iPhone上使用AudioQueue服务播放网络音频流(MP3数据包格式)的方法。为了成功实现这个目标,我先用AudioQueue把普通的本地MP3文件拿来播放,果然可以。然后,我用stdio函数fread替换了AudioFileReadPackets,每次我都像AudioFileReadPackets一样fread相同数量的mp3数据包,以模拟来自网络的音频流。然而,这一次,错误来了:2011-09-2814:21:28.245SunFlower[1554:207]Prime:ExitingbecausemConverterErroris-50(0x1194

iOS:将 OpenAL 的变调和管道输出输出到缓冲区

我最近发现在iOS中可以使用OpenAL进行音高转换。我正在查看Hollance的音库播放器。它吸收了15个左右散布在整个范围内的钢琴音符,并通过找出它最接近哪个样本来播放任何音符,并将该样本的音高移动适当的量。这是执行此操作的代码:-(void)noteOn:(int)midiNoteNumbergain:(float)gain{if(!initialized){NSLog(@"SoundBankPlayerisnotinitializedyet");return;}intsourceIndex=[selffindAvailableSource];if(sourceIndex!=-1

iOS 11 Objective-C - 使用 AVAssetWriterInputPixelBufferAdaptor 从 ReplayKit 处理图像缓冲区

我正在尝试使用ReplayKit记录我的应用程序的屏幕,在录制视频时裁剪掉其中的某些部分。不太顺利。ReplayKit将捕获整个屏幕,因此我决定从ReplayKit接收每一帧(作为CMSampleBuffer通过startCaptureWithHandler),在那里裁剪并通过AVAssetWriterInputPixelBufferAdaptor将其提供给视频编写器.但是我在裁剪之前硬复制图像缓冲区时遇到了麻烦。这是我记录整个屏幕的工作代码://Startsrecordingwithacompletion/errorhandler-(void)startRecordingWithHa

ios - SCNTechnique 的 DRAW_QUAD channel 中来自 ARSCNView 的空白深度缓冲区

我正在尝试在ARSceneKit演示的后处理步骤中进行深度测试。为此,我需要渲染ARSCNView的深度图。使用SCN技术似乎不可能得到它。当尝试使用DRAW_SCENEchannel的深度作为SCNTechnique中DRAW_QUADchannel的输入时,我不断得到空白(充满1.0-s)深度缓冲区。我已按照SCNTechnique上的指南进行操作并命名深度目标。这是SCNTechnique实现中的错误,还是我在配置中遗漏了什么?颜色缓冲区链接正确,示例来自https://github.com/lachlanhurst/SCNTechniqueTest/tree/pixelate有

ios - 为什么 jpegStillImageNSDataRepresentation 在样本缓冲区不为空时抛出异常?

在iOS中,我使用代码从AVCaptureStillImageOutput中捕获:[_captureStillOutputcaptureStillImageAsynchronouslyFromConnection:_captureConnectioncompletionHandler:asyncCaptureCompletionHandler];为了简化我的代码,我的asyncCaptureCompletionHandlerblock看起来像这样:void(^asyncCaptureCompletionHandler)(CMSampleBufferRefimageDataSampleB

ios - 哪个 API 可以从 ios 和 osx 中的缓冲区播放音频?

我想做这件非常简单的事情:从内存中播放PCM音频数据。音频样本将来自声音合成算法、预加载的样本文件或其他任何内容。我的问题实际上是关于如何播放缓冲区,而不是如何用数据填充它们。所以我正在寻找重新实现旧的、已弃用的AudioWrapper(基于AudioUnitsV1)的最佳方法,但我在AppleDocumentation中找不到满足以下条件的API:兼容10.5到10.7。在ios中可用。不依赖第三方库。面向future(例如:不基于Carbon,64位...)。我正在考虑使用OpenAL,但它真的是最佳选择吗?我看过negativeopinions关于它,它可能过于复杂和矫枉过正,并

iphone - 使用适用于 iOS 的 ExtAudioFileWrite 将音频样本缓冲区写入 aac 文件

更新:我已经解决了这个问题并发布了我的解决方案作为我自己的问题的答案(如下)我正在尝试使用AAC格式的ExtAudioFileWrite将一个简单的音频样本缓冲区写入一个文件。我已经通过下面的代码实现了这一点,将单声道缓冲区写入.wav文件-但是,我无法对立体声或AAC文件执行此操作,而这正是我想要做的。这是我目前所拥有的...CFStringReffPath;fPath=CFStringCreateWithCString(kCFAllocatorDefault,"/path/to/my/audiofile/audiofile.wav",kCFStringEncodingMacRoma

ios - iOS 8 上的 AVCaptureVideoDataOutput 不会在指定的调度队列上发布样本缓冲区

当使用AVCaptureVideoDataOutput并使用调度队列(setSampleBufferDelegate:queue)定义样本缓冲区委托(delegate)时,我们在iOS8上遇到AVFoundation不会将样本缓冲区发布到指定的调度队列,而是始终使用“com.apple.avfoundation.videodataoutput.bufferqueue”。这在iOS7上按预期工作。有没有人遇到过这种情况?一个明显的解决方法是在回调中手动调用dispatch_sync以将处理同步到自定义调度队列,但是奇怪的是,这会导致死锁...产生此问题的示例代码:-(void)viewD

iphone - iOS 和从内存缓冲区解码 MP3/AAC 数据

请原谅,我在iOS方面还是个新手-总体而言,在这种规模下进行编程。我一直在研究iOS文档,我知道有一些函数,例如ExtAudiofile...用于解码MP3/AAC文件,但是是否有任何函数可以对内存中已有的Mp3/aac数据进行操作?我可能不得不从另一个文件中提取媒体数据(逐字节;iOS允许这样做吗?),所以我不能只给它URL。编辑:mp3数据将是非标准文件格式,Apple提供的功能应该无法读取它们。我听说iOS有一个在一个音频流上工作的硬件解码器,如果有多个流,操作系统将回退到软件解码。我宁愿使用Apple提供的功能,然后将MP3解码器集成到应用程序中。