问题标签 [cmsamplebufferref]
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.
iphone - 是否存在类似 cvShowImage for iOS 的东西?
我正在处理图像(在 iOS 上使用 AVFoundation 和 OpenCV),我想简单地将 CMSampleBufferRef(或 IplImage)的内容显示到屏幕上。
简单地说:我只想显示(如使用 OpenCV 的cvShowImage()
)未转换的图像,看看我是否没有处理损坏或以某种方式变形的图像。
iphone - 在适用于 iOS 的视频通话应用中需要帮助
我正在创建一个简单的视频通话应用程序,其中音频/视频将从一个设备流式传输到另一个设备,但问题是我不知道视频通话是如何工作的,尤其是如何在iOS
. 到目前为止,我已经通过使用AVCaptureSession
和使用此委托方法中的缓冲区来捕获视频
为了测试,我使用 . 将音频和视频缓冲区写入文档目录AVAssetWriter
。之后,我轻松地将视频存储到 iPhone 画廊或使用MPMoviecontroller
播放器播放。
现在,我有以下问题
- 我不知道如何将这些缓冲区连续发送到服务器,然后将服务器发送到其他设备。
如果我成功地将数据发送到其他设备,那么我将如何对其进行解码以在其他设备上显示视频。
我已经搜索过了。喜欢通过 udp 数据包发送数据,但我对此一无所知。
如果我得到正确的知识该做什么,那么我相信我将能够做到。请向我提供您的意见,我应该怎么做才能实现这一目标。我会感谢你的帮助
ios - 如何为 AVWriter 写入设置 CMSampleBuffer 的时间戳
我正在使用 AVFoundation 来捕获和录制音频。有些问题我不是很明白。
基本上我想从 AVCaptureSession 捕获音频并使用 AVWriter 编写它,但是我需要对从 AVCaptureSession 获得的 CMSampleBuffer 的时间戳进行一些转换。我阅读了 CMSampleBuffer 的文档,我看到了两个不同的时间戳术语:“演示时间戳”和“输出演示时间戳”。两者有什么不同?
假设我从 AVCaptureSession 获得了一个 CMSampleBuffer(用于音频)实例,并且我想使用 AVWriter 将其写入文件,我应该使用什么函数将 CMTime“注入”到缓冲区以便设置它的呈现时间戳结果文件?
谢谢。
ios - 捕获仍然没有压缩的 UIImage(来自 CMSampleBufferRef)?
我需要从 CMSampleBufferRef 中获取UIImage
未压缩的图像数据。我正在使用代码:
http://developer.apple.com/library/ios/#qa/qa1702/_index.html是imageFromSampleBuffer
函数的链接。
但它不能正常工作。:(
有一种jpegStillImageNSDataRepresentation:imageSampleBuffer
方法,但它给出了压缩数据(嗯,因为 JPEG)。
捕获静止图像后如何UIImage
使用最原始的非压缩数据创建?
也许,我应该为视频输出指定一些设置?我目前正在使用这些:
我注意到,该输出的默认值为AVVideoCodecKey
,即AVVideoCodecJPEG
。是否可以以任何方式避免它,或者在捕获静止图像时它是否重要?
我在那里找到了一些东西:来自“645 PRO”之类的相机的原始图像数据,但我只需要一个 UIImage,而不使用 OpenCV 或 OGLES 或其他第 3 方。
iphone - 将 AVAssetWriter 与原始 NAL 单元一起使用
我在 iOS 文档中注意到,AVAssetWriterInput
您可以通过nil
字典outputSettings
来指定不应重新编码输入数据。
用于对附加到输出的媒体进行编码的设置。传递 nil 以指定不应重新编码附加的样本。
我想利用此功能传入原始 H.264 NAL 流,但我无法将原始字节流调整为CMSampleBuffer
可以传入 AVAssetWriterInputappendSampleBuffer
方法的流。我的 NAL 流仅包含 SPS/PPS/IDR/P NAL(1、5、7、8)。我无法找到有关如何将预编码的 H264 数据与 AVAssetWriter 一起使用的文档或结论性答案。生成的视频文件无法播放。
如何正确地将 NAL 单元打包成CMSampleBuffers
? 我需要使用起始代码前缀吗?长度前缀?我需要确保我只放一个 NALCMSampleBuffer
吗?我的最终目标是使用 H264/AAC 创建 MP4 或 MOV 容器。
这是我一直在玩的代码:
请注意,在我实际尝试附加它之前,我使用我认为有效的时间调用方法CMSampleBufferSetOutputPresentationTimeStamp
内部的示例缓冲区。writeSampleBuffer
任何帮助表示赞赏。
ios - 裁剪 CMSampleBufferRef
我正在尝试将图像裁剪CMSampleBufferRef
为特定大小。我正在做 5 个步骤 - 1.PixelBuffer
从SampleBuffer
2. 转换PixelBuffer
为CIImage
3. 裁剪CIImage
4. 渲染CIImage
回PixelBuffer
5. 附加PixelBuffer
到SampleBuffer
. 到目前为止,我在第 4 步遇到问题 - 将图像渲染回PixelBuffer
(无法检查超出这一点)没有渲染到缓冲区(我使用相同的方法检查它CIImage imageWithCVPixelBuffer
并获得 NULL 作为返回)。非常感谢任何提示或帮助。
avfoundation - 使用 AVAssetWriter 时未释放 PixelBuffer
我正在使用带有单个视频输入的 AVAssetWriter 将视频帧写入电影。写循环的机制不是问题:但我发现内存管理是。
关于 CMSampleBufferRef,我要附加:a)我从一些图像数据(原始字节)创建一个 CVPixelBufferRef。因此,CVPBR 拥有数据。b)然后我像这样将其包装在 CMSampleBufferRef 中(为简洁起见,删除了错误检查):
这为我创建了一个可以传递给 AVWriter 的缓冲区。到目前为止,一切都很好。问题是,如果我在将缓冲区附加到写入器后简单地释放缓冲区,我会看到奇怪的失真。
如果我这样做:
然后它工作,没有内存泄漏,但偶尔我会看到损坏的帧。注意有时不同步的帧,以及在第 391,394 帧处明显的内存损坏。对我来说,看起来内存缓冲区在 AVF 完成编码之前就被释放了。
如果我删除 CFRelease(pixelBuffer),问题就会消失。生成的电影非常流畅,完全没有损坏。当然; 那么我有一个多 GB 内存泄漏的问题!
有没有其他人遇到过这样的事情?
顺便说一句:我是否使用 AVAssetWriterInputPixelBufferAdaptor 也没关系。得到相同的结果。
这是重现问题的完整代码片段:
ios - 如何确定 AVAssetWriter 中使用的样本缓冲区的持续时间
我有一个示例缓冲区,用于为 AVAssetWriter 捕获视频。我试图找出一种方法来确定我捕获了多少视频(时间)。目前我可以通过使用访问当前缓冲区时间戳
我正在寻找一种方法来确定缓冲区的持续时间,我试过了
由于某种原因,在 .002333 和 nan 之间
ios - 使用 UIImage 创建 CMSampleBufferRef
如何使用 UIImage 创建 CMSampleBufferRef,我需要在录制时在视频帧上添加文本。*请不要告诉我使用 PixelBuffer。
objective-c - 来自 CMSampleBufferRef 的 NSData 或字节
您好,我需要CMSampleBufferRef
通过网络发送一个。客户端然后CMSampleBufferRef
通过音频队列服务播放。我看过一些关于堆栈溢出的例子,但大多数只是发送缓冲区。但随后一些信息丢失了。我发现它[AVAssetReaderOutput copyNextSampleBuffer]
返回了对opaqueCMSampleBuffer
结构的引用。我知道如何获取 的内存地址opaqueCMSampleBuffer
,但是如何将地址的内容复制到数组中,以便通过网络发送?或者有没有更优雅的方法来CMSampleBuffer
通过网络发送。或者我什至可以以某种方式访问opaqueCMSampleBuffer
?
感谢您的时间和帮助