我想更改电影帧的顺序,然后将它们写回新的视频文件。对我来说,将它们全部放在数组中会容易得多,但是将缓冲区样本复制到数组的过程会导致在真实设备上崩溃(但在模拟器中没问题)。我在Xcode中只能看到消息:在此过程中“失去与DEVICE_NAME的连接”-没有崩溃日志等。所以让我们从不会引起任何问题的事情开始:打印每一帧的时间戳CMSampleBufferRefsample;while(sample=[readerOutputcopyNextSampleBuffer]){CMTimetimestamp=CMSampleBufferGetPresentationTimeStamp((__bri
在iOS4.1+上录制实时视频时,我有一个assetWriterAudioInput被馈送CMSampleBufferRef。我想要完成的是在将音频样本处理到assetWriter之前实时处理它们——保存视频,同时改变来自麦克风的音频。关于这样做的方法有什么想法吗? 最佳答案 令我惊讶的是,无需使用处理后的信号创建新的CMSampleBufferRef。使用问题中公开的样本:ReadingaudiosamplesviaAVAssetReader,并就地处理它们,音频有效。有两个注意事项:1)缓冲区大小非常小,每个block大约102
我正在使用AVAssetWriter/AVAssetWriterInput将H.264原始数据写入MP4文件。当我从远程服务器接收数据时,我使用以下CoreMediaAPI获取样本缓冲区(CMSampleBufferRef),其中包含AVCC格式的H.264数据,该数据又通过发送到AVAssetWriterInput附加到MP4文件消息(BOOL)appendSampleBuffer:(CMSampleBufferRef)sampleBuffer:CMBlockBufferCreateWithMemoryBlocktocreateamemoryblockCMBlockBufferRep
目前,使用iPhone5s/6,我能够将120(iPhone5s)或240(iPhone6)帧/秒捕获到CMSampleBufferRef中。但是,返回给我的AVCaptureDeviceFormat仅提供这些高速帧速率,分辨率为1280x720。我想以较低的分辨率(640x480或更低)捕获它,因为我会将其放入循环缓冲区中以供存储。虽然我能够降低didOutputSampleBuffer委托(delegate)方法中的分辨率,但我想知道CMSampleBufferRef是否有任何方法可以通过配置设备或设置直接为我提供较低的分辨率,而不是拍摄720p图像并降低使用CVPixelBuff
我正在使用专为iPhone直播而制作的私有(private)图书馆。在每次记录每一帧时,它都会调用一个delegate函数voidMyAQInputCallback(void*inUserData,AudioQueueRefinQueue,AudioQueueBufferRefinBuffer,constAudioTimeStamp*inStartTime,UInt32inNumPackets,constAudioStreamPacketDescription*inPacketDesc);NowhowIcanappendthisinBuffertomyAVAssetWriterInpu
我正在使用AVSampleBufferDisplayLayer来显示通过网络连接以h.264格式传输的CMSampleBuffer。视频播放流畅且工作正常,但我似乎无法控制帧速率。具体来说,如果我在AVSampleBufferDisplayLayer中每秒排队60帧,它会显示这60帧,即使视频是以30FPS录制的。创建样本缓冲区时,可以通过将计时信息数组传递给CMSampleBufferCreate来设置呈现时间戳(计时信息不存在于h.264流中,但可以计算或以容器格式传递)。我设置的呈现时间戳相隔约0.033秒,持续时间为0.033,但显示层仍会显示尽可能多的每秒帧数。有两种方法可以
我正在尝试通过AVAssetWriter和AVCaptureOutput捕获视频您可以找到示例项目here.视频应采用任意分辨率的纵向模式。主要问题是它应该处于纵向模式。我尝试设置不同的设置,但最终,视频在iPhoneSE上被旋转并缩放到大小(1920x1080)。是否可以控制这个分辨率?或者至少是方向? 最佳答案 视频分辨率由AVCaptureSessionsessionPreset决定。您将其设置为中等,因此您将获得随之而来的分辨率。如果您想要不同的分辨率,请传递不同的session预设,或使用AVCaptureDevice设置
我正在使用AVCaptureVideoDataOutput来捕捉相机视频。我想裁剪CMSampleBufferRef以使最终视频成为正方形。但我找不到解决方案来做到这一点。你有什么想法吗?请不要提供AVAssetExportSession。谢谢。 最佳答案 暂时,您可以尝试使用width和height设置字典,如下所示:NSDictionary*videoSettingsDictionary=@{(id)kCVPixelBufferWidthKey:@(width),(id)kCVPixelBufferHeightKey:@(hei
我想捕捉来self的iPhone游戏的音频(音乐+音效)。AVCaptureSession似乎只有麦克风作为音频源。我想捕获音频,将其放入CMSampleBufferRef并将它们附加到AVAssetWriterInput。我目前正在研究音频队列。还有其他想法吗? 最佳答案 没有API可以直接从您的游戏中捕获所有音效和音乐。最常见的解决方案是让应用程序生成所有声音两次,一次用于音频输出,再加上PCM样本中的第二个相同副本以馈送到DSP或音频单元混音器。然后将混合器输出提供给AVAssetWriter或其他文件输出。如果您的应用程序产
这可能是个愚蠢的问题,但我才刚刚开始了解媒体格式和AVFoundation,所以请多多包涵。我一直在尝试弄清楚AVCaptureVideoDataOutput中的CMSampleBuffer是否可以包含多个帧。从文档来看,这似乎是可能的,但是,我看到的大多数示例代码似乎都与CMSampleBuffer有关,就好像它是一个帧一样。我只是误会了吗?如果每个缓冲区可以有多个帧,是否可以获取各个帧并确定它是否是关键帧?谢谢 最佳答案 的确,一个CMSampleBuffer可以包含多个样本,其中一个样本是任意数据。在AVFoundation中