问题标签 [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 投票
0 回答
391 浏览

avassetwriter - iOS - AVassetWriter 输出大小为 0 的文件并且不给出错误

我对 swift(和编程)仍然很陌生,我正在尝试将从 ARFrame 获得的 CVPixelbuffer 实时输出到视频中(顶部没有 AR 的东西)。

我已经设置了 AVAssetWriter 和 Input,并在每一帧上尝试附加 CVPixelbuffer(转换为 CMSampleBuffer)。

该代码创建了一个 0 字节的文件并且没有给出任何错误。我不知道出了什么问题,而且文档对于我的级别来说相当神秘。

我很确定每帧的时间戳不正确。但我无法弄清楚每一帧是否需要时间,或者自视频开始以来的总时间。

然后是 cvPixelBuffer 的大小和格式。我也不知道我是否需要告诉 AVAssetwriter 即将到来的数据的大小和格式是什么,或者它是否可以自己解决。

感谢您的时间。

0 投票
1 回答
309 浏览

macos - CMSampleBufferGetImageBuffer 为捕获的 JPEG stillImage 返回 nil

我使用JPEG格式捕获Mac屏幕,然后获取捕获的JPEG样本缓冲区的pixelBuffer和imageBuffer。但是,pixelBuffer 始终为零,而当我将 JPEG 缓冲区转换为 NSImage 时,可以成功获取并显示图像。

在 processSampleBuffer 中 self.image 可以得到一个 NSImage 并成功显示在 NSImageView 中。但 imageBuffer 和 pixelBuffer 都是零。

这让我很困惑,有人可以帮忙看看吗?

0 投票
2 回答
1146 浏览

swift - 如何手动释放 CMSampleBuffer

此代码导致内存泄漏和应用程序崩溃:

这是由于copyNextSampleBuffer()Create Rule 造成的

反过来,我们不能在 Swift 中使用 CFRelease()。我无法理解仅指向 Objective-C 规则的链接的原因。

有没有办法在 Swift 中手动释放 CMSampleBuffer?

0 投票
1 回答
749 浏览

ios - AVAssetWriter 为视频方向旋转缓冲区

我正在开发一个正在使用的实时录制应用程序,SwiftAVFoundation我遇到了视频方向问题。我使用AVAssetWriter而不是AVCaptureMovieFileOutput因为我需要以方形格式记录(如果我错了,请纠正我)。

我尝试使用videoInput.transform,但听说并非所有视频播放器都支持它。

我不能avcaptureconnection.videoOrientation根据设备方向使用,因为有一些“主 UI 线程停止”。

我读到最好的解决方案是CMSampleBufferAVCaptureVideoDataOutputSampleBufferDelegate委托函数中旋转captureOutput(...)。它看起来有点复杂,Apple 的文档没有多大帮助,很多帖子都在Objective-C.

在这样做之前,我想知道是否有一些我可能会错过的解决方案。谢谢

0 投票
0 回答
390 浏览

ios - 屏幕共享因 iPAD 中的 (null) 而停止

我在我的应用程序中使用 Replay Kit 2(广播上传扩展)进行屏幕共享。

它在 iPhone 上运行良好,但几秒钟后出现错误,因为当我在 iPAD 上运行它时,它超过了 50 MB 的内存限制。

问题是因为 iPAD 的分辨率很高。由于服务器端的限制,我也必须使用 vp8,所以不能使用 H264。

在将 CMSampleBuffer 发送到服务器之前,我尝试将其分辨率最小化,但内存仍然以相同的速度增加并停止。

}

0 投票
0 回答
194 浏览

ios - EXC_BAD_ACCESS 发生在 H264 编码 CMSampleBuffer 上

试图将 a 转换CMSampleBufferH264编码数据

上述方法被连续调用。好像扔了EXC_BAD_ACCESS

我尝试使用NSZombie对象,但仍然无法弄清楚是什么原因造成的。

我尝试创建一个副本CMSampleBufferRef并传递它以确保它不会被释放。还是EXC_BAD_ACCESS被扔了。

谁能帮我弄清楚发生了什么?

PS -CMSampleBuffer创建自CVPixelBuffer

0 投票
1 回答
227 浏览

ios - 从 AAC 数据创建 CMSampleBuffer

我正在使用记录音频和视频的外部摄像头。

我的应用程序接收具有以下结构的 AAC 格式的音频:

AudioStreamBasicDescription属性具有以下内容:

我正在使用AVAssetWriter并且需要向CMSampleBuffer资产编写器提供 -s 将音频和视频写入文件。

那么如何将上述AudioPacket结构转换为CMSampleBuffer

0 投票
2 回答
2704 浏览

ios - 从 CMSampleBuffer 播放音频

我在 iOS 中为群组创建了一个视频聊天应用程序。我一直在寻找一些方法来分别控制不同参与者的音量。我找到了使用isPlaybackEnabledin静音和取消静音的方法RemoteAudioTrack,但不能控制音量。

我还想如果我们可以在AVAudioPlayer. 我发现addSink。这是我从这里尝试的:

但它崩溃了let player = try! AVAudioPlayer(data: data)


编辑:
这是错误:Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSOSStatusErrorDomain Code=-39 "(null)": file

这是data所以我猜它没有被转换:

这是audioSample

0 投票
1 回答
325 浏览

swift - 由于缓冲区不足,从 AVCaptureDataOutputSynchronizerDelegate 适当释放缓冲区

AVCaptureDataOutputSynchronizerDelegate用来处理捕获视频、深度和元数据的数据

因此,使用下面的代码,我可以在使用的委托方法中获得专门的视频数据AVCaptureDataOutputSynchronizerDelegate

问题是,当我尝试将 videoData 保存到如下数组中时,出现OutOfBuffers错误。如果我尝试保存视频数据/关联的图像/与此数据相关的任何内容,此问题仍然存在。

所以,我在想的事情是,由于我将任何相关数据保存到一个数组中,它会将数据保存在内存中的缓冲区中,而它通常是被释放的。

之前为 OutOfBuffers 链接的网页表明我可以

如果您需要对捕获的数据执行扩展处理,请将该数据复制到您管理其生命周期的缓冲区中,而不是依赖于捕获输出提供的缓冲区。

我试图创建一个新的CMSampleBuffer

但这会导致同样的问题——videoData 仍然停留在缓冲区中。我得到了大约 5-6 组 videoData,然后我就没有更多的数据了。

关于如何“将数据复制到您管理其生命周期的缓冲区而不是依赖于捕获输出提供的缓冲区”的任何指导。outOfBuffers 网站所示?

0 投票
0 回答
390 浏览

avfoundation - kCMSampleBufferAttachmentKey_TrimDurationAtStart 错误

尝试转换从相机录制的视频或从图库中选择的视频时出错: * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[AVAssetWriterInput appendSampleBuffer:] 无法附加样本缓冲区:第一个输入缓冲区必须具有适当的kCMSampleBufferAttachmentKey_TrimDurationAtStart 因为编解码器有编码器延迟'`

这在这里讨论:CMSampleBufferRef kCMSampleBufferAttachmentKey_TrimDurationAtStart crash

但没有达成任何决议。

这是我的代码:

这里发生错误:[strongSelf.audioInput appendSampleBuffer:buffer];