问题标签 [cmsamplebuffer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1414 浏览

iphone - CVPixelBuffer 带音频

我正在使用 AVFoundationCMSampleBufferRef从相机捕获,然后将其转换CVPixelBufferRef为写入视频。我想要做的是修改视频帧内的一些像素。这就是为什么我需要CVPixelBufferRef摆脱我的CMSampleBuffer. 我的问题是我无法将原始的音频数据包含CMSampleBuffer到我的新的CVPixelBufferRef

我也尝试重新创建CMSampleBufferCVPixelBufferRef但它返回错误:

0 投票
1 回答
8032 浏览

iphone - 从 CVPixelBuffer 参考中获取所需数据

我有一个程序可以实时查看相机输入并获取中间像素的颜色值。我使用 captureOutput: 方法从 AVCaptureSession 输出(恰好被读取为 CVPixelBuffer)中获取 CMSampleBuffer,然后使用以下代码获取像素的 rgb 值:

我虽然那个公式 ((width*height)*4)/2 会给我中间像素,但它给了我图像的顶部中间像素。我想知道我需要使用什么公式来访问屏幕中间的像素。我有点卡住了,因为我真的不知道这些像素缓冲区的内部结构。

将来我想抓取 4 个中间像素并将它们平均以获得更准确的颜色读数,但现在我只想了解这些东西是如何工作的。

0 投票
0 回答
393 浏览

ios - captureOutput:didOutputSampleBuffer:fromConnection: 是否携带任何方向信息?

我通过 OpenGL 将大量图像处理应用到相机实时预览层,并且在我从 OpenGL 请求图像(以应用相应的转换)之前,我想获取有关输入方向的一些信息。

捕获发生在仅纵向视图控制器中,并且有来自设备方向的通知,或者东西可能与实际图像方向不同步,恐怕。

CMSampleBuffer 有任何方向信息吗?还是 AVCaptureConnection?

0 投票
0 回答
6580 浏览

ffmpeg - 如何用从 CMSampleBufferRef (AVFoundation) 获得的数据填充音频 AVFrame (ffmpeg)?

我正在编写将实时音频和视频从网络摄像头流式传输到 rtmp-server 的程序。我在 MacOS X 10.8 中工作,所以我使用 AVFoundation 框架从输入设备获取音频和视频帧。这个框架进入委托:

-(void) captureOutput:(AVCaptureOutput*)captureOutput didOutputSampleBuffer: (CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection*)connection ,

其中sampleBuffer包含音频或视频数据。

当我在 中接收音频数据时sampleBuffer,我正在尝试将此数据转换为并使用 libavcodecAVFrame进行编码:AVFrame

问题是,当我得到如此形成的帧时,我可以听到想要的声音,但它会变慢并且不连续(好像每个数据帧之后都会出现相同的静音帧)。CMSampleBuffer从到的转换似乎有问题 AVFrame,因为来自相同样本缓冲区的 AVFoundation 创建的麦克风的预览正常播放。

我会很感激你的帮助。

UPD:创建和初始化 AVCodceContext 结构

0 投票
0 回答
170 浏览

iphone - 需要在 AVCam 上的 AVCaptureSession 中捕获的每一帧的时间戳

我需要的是能够编辑 AVCam,以便我可以存储、访问或以某种方式查看捕获的短视频中每一帧的时间戳。经过一番研究,我认为可以做到,但不确定如何做。我在 Xcode 'CMSampleBuffergetoutputsampletiminginfoarray' 中看到这听起来可能会有所帮助。或者也许通过使用,getpresentationtimestamp 等。

我不确切知道我需要哪个时间戳(PTS 或 DTS),我要拍摄一个快速移动的物体,并且想要每帧之间经过的确切时间。

请帮忙!

0 投票
3 回答
2444 浏览

ios - 从 CMSampleBuffer 获取曝光时间 (EXIF)

我正在尝试从使用AVFoundation. 当我遵循 2010 年的 WWDC 指令时,关于从中检索有用的图像元数据CMSampleBuffer

我在线上有一个错误CFDictionaryRef

所以我在互联网上遵循了一个解决方案,如下所示:

现在它给了我另一个错误:Undefined symbols for architecture armv7s

我不明白我的程序出了什么问题。有人有什么想法吗?

0 投票
2 回答
3602 浏览

macos - Adding filters to video with AVFoundation (OSX) - how do I write the resulting image back to AVWriter?

Setting the scene

I am working on a video processing app that runs from the command line to read in, process and then export video. I'm working with 4 tracks.

  1. Lots of clips that I append into a single track to make one video. Let's call this the ugcVideoComposition.
  2. Clips with Alpha which get positioned on a second track and using layer instructions, is set composited on export to play back over the top of the ugcVideoComposition.
  3. A music audio track.
  4. An audio track for the ugcVideoComposition containing the audio from the clips appended into the single track.

I have this all working, can composite it and export it correctly using AVExportSession.

The problem

What I now want to do is apply filters and gradients to the ugcVideoComposition.

My research so far suggests that this is done by using AVReader and AVWriter, extracting a CIImage, manipulating it with filters and then writing that out.

I haven't yet got all the functionality I had above working, but I have managed to get the ugcVideoComposition read in and written back out to disk using the AssetReader and AssetWriter.

As you can see, I can even get the CIImage from the CMSampleBuffer, and I'm confident I can work out how to manipulate the image and apply any effects etc. I need. What I don't know how to do is put the resulting manipulated image BACK into the SampleBuffer so I can write it out again.

The question

Given a CIImage, how can I put that into a sampleBuffer to append it with the assetWriter?

Any help appreciated - the AVFoundation documentation is terrible and either misses crucial points (like how to put an image back after you've extracted it, or is focussed on rendering images to the iPhone screen which is not what I want to do.

Much appreciated and thanks!

0 投票
1 回答
1678 浏览

ios - 缩放和裁剪 CMSampleBufferRef

我正在使用 AvFoundation 和 AVCaptureVideoDataOutputSampleBufferDelegate 来录制视频。

我需要在正在录制的视频中实现缩放功能。我正在使用以下委托方法。

我使用它来获取视频帧,因为我需要稍后在其上添加文本和图像,然后再将其附加到 AVAssetWriterInput,使用

我认为执行缩放的唯一方法是缩放和裁剪我从委托方法获得的“(CMSampleBufferRef)sampleBuffer”。

请帮我解决这个问题。我需要知道缩放和裁剪“CMSampleBufferRef”的可能方法。

0 投票
1 回答
363 浏览

objective-c - 播放 CMSampleBuffer

我正在尝试创建一个将视频和音频流式传输到另一台计算机的应用程序。

在“服务器”端,我能够捕获(使用AVCaptureSession)视频和音频,预览它们并使用委托通过网络发送它们,并在另一端重建所有内容。

在“客户端”方面,我有一个CMSampleBuffer包含音频和视频的内容,但我找不到播放它的方法。我已经检查了AVPlayerand AVCaptureSession,但我不理解带有CMSampleBufferfor 输入的机制。

任何想法,链接?谢谢!

0 投票
1 回答
770 浏览

ios8 - iOS 视频工具箱给出“忽略 enqueueSampleBuffer:因为状态为“失败””

我在 iOS8 中使用视频工具箱来播放 h264 流和 PCM 音频流。只要我不启动音频流,视频就可以正常显示。一旦我调用 AudioQueueStart,所有 enqueueSampleBuffer 调用都会停止显示视频并打印错误“忽略 enqueueSampleBuffer:因为状态为“失败””。

CMBlockBuffer 调用没有返回错误。enqueueSampleBuffer 不返回任何内容,因此我无法编写代码以在此错误上再次重新创建视频层。

这只发生在 iOS 设备上而不是模拟器上。音频和视频在模拟器上播放得非常好。我在单独的线程上运行音频和视频,这样一个线程就不会阻塞另一个线程。有没有人遇到过同样的问题?