- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开展一个项目,我使用 AVCaptureSession
捕获用户的视频输入。问题是我需要 BGRA 格式的输出以使用 OpenCV 渲染它,但随后我需要将其更改回默认的 420f 格式以将其显示给用户。所以,我将 videoSettings
中的 PixelFormatType
设置为 kCVPixelFormatType_32BGRA
,
[videoOutput setVideoSettings:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] forKey:(id)kCVPixelBufferPixelFormatTypeKey]];
我想在 captureOutput 中将样本缓冲区转换为 420f:
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
[self doSomeOpenCV:sampleBuffer]; // the OpenCV part
//convert sampleBuffer to kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
}
有办法吗?或者,也许有一个函数可以在给定输入的情况下返回指定格式的样本缓冲区?
最佳答案
为什么不使用 AVSampleBufferDisplayLayer
来显示您的 BGRA 示例缓冲区并放弃 webRTC(至少为了显示目的)?
如果你不想那样做,你当然可以将你的 BGRA 缓冲区转换为 YUV,你甚至可以在 GPU 上非常有效地完成它,但最好的转换是不转换,而且谁想要输入那么多在 iPad 屏幕键盘上?
关于ios - CMSampleBuffer 将 BGRA 转换为 YUV 420f,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488828/
在这里,我尝试从照片库中选择视频并将其作为samplebuffer逐帧读取,以便稍后可以裁剪或旋转。但问题是CMSampleBuffer默认旋转。我用于初始化的变量是 var asset:AVAss
我正在尝试从 CMSampleBuffer 访问样本以进行进一步处理(主要是视觉处理),这是我的代码: func captureOutput(_ output: AVCaptureOutput, d
这可能是个愚蠢的问题,但我才刚刚开始了解媒体格式和 AVFoundation,所以请多多包涵。 我一直在尝试弄清楚 AVCaptureVideoDataOutput 中的 CMSampleBuffer
我通过以下方式从我的相机获取帧: func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffe
我们的应用程序使用 AVFoundation 来捕获视频,并使用其样本缓冲区显示、操作和导出视频。我试图了解 CMSampleBufferGetPresentationTimeStamp(_:) CM
我在从 AVCaptureSession 相机中的 CMSampleBuffer 释放内存时遇到问题。这是我设置捕获 session 的代码。如果我处置 imageDataSampleBuffer,应
我正在尝试获取样本缓冲区中的图像元数据,以下是代码片段: stillImageOutput.CaptureStillImageAsynchronously(requiredConnection,(CM
我想通过网络连接发送视频流的帧,所以我实现了 AVCaptureVideoDataOutputSampleBufferDelegate 函数: func captureOutput(_ output:
我想修改CMSampleBuffer的内容,然后用AVAssetWriter/AVAssetWriterInput写入文件。 我这样做的方法是创建一个 Core Graphics 位图上下文,然后在其
使用AVCaptureAudioDataOutput时,CMSampleBuffer中存储的数据是什么?它通过委托(delegate)方法 –captureOutput:didOutputSample
我使用 AVAssetWriter 和 CMSampleBuffer 数据(来自视频、音频输入)录制视频(.mp4 文件)。 在录制时我想处理帧,我正在将 CMSampleBuffer 转换为 CII
我在 iOS 中为群组创建了一个视频聊天应用程序。我一直在寻找一些方法来分别控制不同参与者的音量。我找到了使用 RemoteAudioTrack 中的 isPlaybackEnabled 静音和取消静
我正在尝试创建由 AVCaptureAudioDataOutputSampleBufferDelegate 中的 captureOutput 返回的 CMSampleBuffer 副本. 我遇到的问题
我正在尝试创建 CMSampleBuffer 的副本,由 AVCaptureVideoDataOutputSampleBufferDelegate 中的 captureOutput 返回。 由于 CM
我从 ARSessionDelegate 得到一个 CVPixelBuffer: func session(_ session: ARSession, didUpdate frame: ARFrame
我试图从使用 AVFoundation 捕获的图像中获取曝光时间.当我按照 2010 年的 WWDC 指令从 CMSampleBuffer 检索有用的图像元数据时像这样: -(void)capture
我有一个附加到 AVPlayerItem 的 AudioTapProcessor。 这将调用static void tap_ProcessCallback(MTAudioProcessingTapRe
我想使用 GPUImageView 输出从 AVCaptureVideoDataOutputSampleBufferDelegate 接收到的 CMSampleBuffer。所以,基本上,我不希望 G
我正在使用同时录制音频和视频的外部摄像头。 我的应用程序接收具有以下结构的 AAC 格式的音频: struct AudioPacket { let timestamp: TimeInterval
我正在使用框架 (MoodMe) 来检测 iPhone 相机上的人脸,我需要将图像或帧传递给 MoodMe 实例。 我已将相机输出转换为 UIImage,但框架未检测到任何人脸。 (我觉得) 所以我想
我是一名优秀的程序员,十分优秀!