问题标签 [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 回答
280 浏览

cocoa - CMSampleBufferGetDataBuffer() 返回 nil 值 - Cocoa Swift

我正在尝试捕获系统的屏幕并处理数据。但是我在委托方法CMSampleBufferGetDataBuffer中获得的样本缓冲区的值为零。captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection)任何想法?下面是我的代码:

0 投票
1 回答
926 浏览

ios - 暂停/恢复时实时 AVAssetWriter 同步音视频

我正在尝试使用 iPhone 的前置摄像头录制带声音的视频。由于我还需要支持暂停/恢复功能,我需要使用AVAssetWriter. 我在网上找到了一个用 Objective-C 编写的示例,它几乎可以实现所需的功能(http://www.gdcl.co.uk/2013/02/20/iPhone-Pause.html

不幸的是,在将此示例转换为 Swift 之后,我注意到如果我暂停/恢复,在每个“部分”的末尾会有一个小而明显的时间段,在此期间视频只是一个静止帧并且正在播放音频。因此,似乎在isPaused触发时,录制的音轨比录制的视频轨长。

对不起,如果这看起来像一个菜鸟问题,但我不是一个伟大的专家AVFoundation,一些帮助将不胜感激!

下面我发布我的didOutput sampleBuffer.

这是我的VideoEncoder课:

其余代码应该很明显,但为了使其完整,这是我暂停的内容:

这是简历:

如果有人可以帮助我了解如何在这种现场录制过程中对齐视频和音轨,那就太好了!

0 投票
2 回答
412 浏览

ios - 您可以直接从 CMSampleBuffer 播放音频吗?

我在 ARSession 期间捕获了麦克风音频,我希望将其传递给另一个 VC 并在捕获发生后播放,但应用程序仍在运行(并且音频在内存中)。

音频当前被捕获为单个 CMSampleBuffer 并通过该didOutputAudioSampleBuffer ARSessionDelegate方法访问。

我以前使用过音频文件和 AVAudioPlayer,但对 CMSampleBuffer 还是陌生的。

有没有办法按原样获取原始缓冲区并播放它?如果是这样,哪些类启用此功能?还是需要先将其渲染/转换为其他格式或文件?

这是缓冲区中数据的格式描述:

任何指导都值得赞赏,因为 Apple 的文档在这个问题上并不清楚,关于 SO 的相关问题更多地处理音频的实时流,而不是捕获和随后的回放。

0 投票
1 回答
125 浏览

swift - CMSampleBufferCreate 导致线程 1:EXC_BAD_ACCESS(代码=1,地址=0x0)

我正在尝试用 CMBlockBuffer 制作一个 CMSampleBuffer 并且我正在使用CMSampleBufferCreate,但无论我尝试什么,我总是得到Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

我不知道该怎么做,所以如果有其他方法或者我做错了什么,请告诉我,因为这样的例子并不多。非常感谢!

0 投票
0 回答
212 浏览

ios - Swift 中的音频 CMSampleBuffer 音量变化

我正在尝试使用 AVAssetwriter 录制视频。现在想控制我最终输出视频文件的音量。有什么帮助吗?

我尝试过的解决方案:-

  1. self.avAssetInputAudio?.preferredVolume = 0.2//此属性的值通常应在 0.0 到 1.0 的范围内。(相当于“正常”音量) https://developer.apple.com/documentation/avfoundation/avassetwriterinput/1389949-preferredvolume 输出:- 输出文件中的音量没有变化。

2.使用CMSampleBuffer处理音频

输出:- 最终音频断断续续且嘈杂。

0 投票
0 回答
33 浏览

ios - CMSampleBuffer 重复音频通道

给定一个带有一个通道的单声道音频 CMSampleBuffer,如何创建一个具有两个通道且其他通道音频样本与另一个通道重复的新 CMSampleBuffer?换句话说,我需要从单声道音频创建立体声。

0 投票
0 回答
24 浏览

swift - 在 Vision 识别事件之前记录相机输出

我的应用程序使用 Vision 识别事件并使用 CMSampleBuffer 来执行此操作。事件发生后,我正在成功使用 AVWriter 录制视频。

现在我想记录完整的动作,从而在事件发生前记录 1-2 秒。

我尝试将其推CMSampleBuffer入环形缓冲区,但这会使缓冲区的相机饿死。

如何在不将其写入磁盘然后将其添加到视频文件的情况下连续存储这 1-2 秒的视频?

谢谢!

0 投票
1 回答
141 浏览

ios - 在 iOS 上使用 RTCAudioSource 捕获 CMSampleBuffer

我正在尝试在 iOS 上使用 WebRTC 流式传输 CMSampleBuffer 视频/音频组合,但我在尝试捕获音频时遇到了麻烦。视频效果很好:

谈到音频,我在课堂上看不到任何方法RTCAudioSource来捕获音频,任何帮助将不胜感激!

0 投票
0 回答
81 浏览

swift - 如何在没有内存泄漏的情况下在 Swift 中创建 CMSampleBuffers?

我正在读取带有内容的视频数据,AVAssetReader并通过再次读取内容并修改时间戳来“循环”内容。相关代码为:

一旦视频完成其第一个循环(即一次offsetTime大于零),内存就会开始爆炸。注释掉创建具有更新时序的新缓冲区的代码可以修复内存泄漏(但这不可行,因为我需要更新的时序)。

大概CMSampleBufferCreateCopyWithNewTiming是为每个缓冲区分配新空间,并且该缓冲区永远不会被清理。我已经阅读了autoreleasepool一个潜在的选项,但是这个缓冲区被传递了很多(它通过一个自定义的发布者)。有没有办法消除内存泄漏?我可以为 1 个缓冲区分配空间并在每一帧上一次又一次地覆盖它 - 这可能吗?

0 投票
0 回答
14 浏览

avfoundation - 使用 AVAssetWriter 转换视频时更改信箱颜色

我有一个使用 AVAssetWriter 转换视频的视频转换应用程序。改变它们的格式和大小。

它基于 Apple 的示例代码,看起来类似于此https://gist.github.com/johnnyclem/4850b03555e57f413b23

当我更改正在转换的视频的纵横比时,它会被加装信箱,这很好,但是我想做的是让信箱变成不同的颜色。正如您所期望的那样,目前它始终是黑色的。

我不知道该怎么做。我假设我可以为我正在渲染的框架添加背景颜色。有谁知道我该怎么做?