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

swift - 如何在将修改后的 sampleBuffer 图像附加到 AVAssetWriter 时从麦克风录制音频

这是我之前遇到的一个未回答问题的扩展:AVCaptureSession is notrecording audio from the mic in Swift

我非常不清楚如何编写实时修改的视频和从麦克风录制的音频。我一直在寻找几个月,我什么也没找到。似乎使我的问题与其他问题不同的是,我从 captureOutput 函数中的 sampleBuffer 获取图像缓冲区,将其转换为图像,对其进行修改,然后将其写回 AVAssetWriterInputPixelBufferAdaptor,而不是将输出中的所有内容记录为普通视频。从这里开始,我不知道如何从 sampleBuffer 获取音频,或者这是否是正确的方法,尽管我看到其他人从 captureOutput 获取 AudioBufferList。

至少,这是我在我的主要课程中所拥有的:

我创建资产编写器的课程

当我录制我创建作家时,开始写作并开始会话:

当我停止录制时,它会转到另一个视图来显示视频:

但这就是我卡住的地方——我在哪里以及如何记录麦克风的输入?

再一次,我已经断断续续地做了几个月了——没有文件我能找到帮助。谢谢

0 投票
0 回答
898 浏览

swift - 如何在 Swift 中将 CMSampleBuffer 转换为视频数据?

我从这里下载了源代码。我CMSampleBuffer在以下功能中从相机获取视频。

如何转换sampleBufferData使用Swift4?

我试过这个。但它正在创造另一个问题,而不是 iPhone 而不是模拟器。

0 投票
0 回答
85 浏览

ios - 如何将 cmsamplebuffer 数据获取到 FFMpeg 中的 avformate_open_input() 函数?

我想使用 FFMPEG 将苹果手机摄像头流式传输到 UDP 端口。到目前为止,我已经从视频文件中完成了。但现在我想从苹果手机摄像头现场直播。一些机构可以给我一些线索。我为这个解决方案而头晕目眩?请帮我。

0 投票
1 回答
1012 浏览

swift - Generating Float32 Array (Float32 PCM data) using CMSampleBuffer

I get the callbacks from camera with for audio with data in the format of CMSampleBuffer but I am unable to convert this data to PCM data.

I followed the docs provided by Apple copyPCMData, UnsafeMutablePointer, AudioBufferList but all I get is 0.0 at the end.

Here is my code:

0 投票
1 回答
2345 浏览

ios - 现在如何使用 CMSampleBufferGetImageBuffer 在 Swift 中正确获取 ImageBuffer?

在此处输入图像描述

'CMSampleBufferGetImageBuffer' 已被属性 'CMSampleBuffer.imageBuffer' 取代

CMSampleBufferGet.ImageBuffer 不起作用 :) 似乎参数也正在更改关于 Swift 4.2。

全功能。以防万一 ...

有没有人尝试解决这个问题或有新语法的参考?

0 投票
1 回答
512 浏览

swift - iOS swift - 录制多个视频片段在 AVQueuePlayer 中播放时冻结

首先让我说我已经搜索了这个问题的答案很长时间并且已经阅读了许多 SO 帖子,但没有一个提供我需要的答案

我正在尝试使用多个 AVAssetWriters/AVAssetWriterInputs 录制多个视频片段,我将其实例化并立即排队。

我面临的问题是,虽然视频被正确录制,但当它们进入 AVQueuePlayer 以按顺序播放时,会随机发生其中一个视频将冻结但继续播放音频的情况。

准备 AVAssetWriters/VideoInputs/AudioInputs:

处理 CMSampleBuffers 现在 AVAssetWriters 及其输入已初始化,我按下一个记录按钮,该按钮更改 Bool 值,让AVCaptureVideoDataOutputSampleBufferDelegate知道开始捕获 CMSampleBuffers:

从每个 AVAssetWriter 获取视频片段

至于获取视频片段,我endRecording以指定的时间间隔调用此函数,以便从每个 AVAssetWriter 的 outputURL 中获取视频:

问题

为了重申这个问题,这个实现创建了四个视频,每个视频几乎没有问题,但是,当我尝试使用AVQueuePlayer. 其中一个视频仅在开始时随机冻结,同时继续播放音频直到结束。我可以根据自己的喜好多次执行此记录并获得不同的结果。实际上,在某些情况下根本不会发生冻结并且可以毫无问题地播放所有视频。

但通常情况下,冻结以完全随机的间隔发生。这种冻结不会解冻。应用程序的其余部分仍然响应(我可以按一个按钮删除所有视频并让我从头开始重新录制)。但是再次执行记录会导致在某个其他随机时间间隔冻结。

我尝试将视频合并为单个视频并在照片应用程序中播放,随机冻结也发生在那里。但是,我也将视频单独下载到照片应用程序(四个短视频和一个长视频下载到照片),如果单独播放,每个视频都可以正常播放。

0 投票
2 回答
1361 浏览

ios - “CMSampleBuffer”类型的值没有成员“imageBuffer”

我目前正在开发一个在 Swift 中使用实时摄像头视图的项目。我使用我在 GitHub 上找到的一些代码为我提供了实时摄像头视图,它在运行 Mojave 的 MacBook Pro 上运行良好。我将所有文件都存储在外部硬盘上,所以我去了我的 iMac 并开始在那里处理项目。我想我有两个不同版本的 Xcode 10 测试版,这可能是问题的一部分?基本上这条线在我的 MacBook 上运行良好,但在 iMac 上运行良好,顺便说一句,它运行的是 macOS high Sierra 版本 15:

它给了我以下错误:

但是当在我的 macbook 上打开完全相同的项目时,这没有任何问题。这可能是 Xcode 版本的事情,还是因为我正在运行两个不同的 macOS 版本?

0 投票
1 回答
283 浏览

ios - 从 iOS 上的 HLS 视频流中提取 CMSampleBuffer

如何AVPlayer从 Live HLS 流中保存当前正在播放的内容(视频和音频)?

我知道如何m3u8使用AVPlayer.

请注意,HLS 流是实时的,而不是视频点播,因此无法使用AVAggregateAssetDownloadTask在完美的场景中将获得CMSampleBuffer可以轻松保存到文件的对象。也不AVPlayerItemOutput完全是一种选择,因为我无法看到如何获得音频通道。

0 投票
2 回答
1789 浏览

ios - 如何从 RPScreenRecorder.shared().startCapture 中的 CMSampleBuffer 获取视频帧?

我使用 RPScreenRecorder.shared().startCapture 进行屏幕录制,并使用 AVAssetWriterInput 编码成 h264 视频文件,但它给了我直接的 .mp4,我希望在录制屏幕进行流式传输时逐帧播放 h264 视频文件。有什么方法可以访问来自 RPScreenRecorder.shared().startCapture 的样本缓冲区数据?这是代码。在这里我得到整个 mp4 文件,但我只想要视频帧

0 投票
0 回答
511 浏览

swift - 快速从 mp3 文件中提取 CMSampleBuffer

我正在尝试CMSampleBuffer从 mp3 文件中提取以将其用于录制视频。这是代码:

首先从 mp3 获取 PCM 缓冲区

我如何将 pcm 缓冲区转换为 cmsamplebuffer 的代码:

但我总是得到错误代码:-12771: kCMSimpleQueueError_RequiredParameterMissing. 这是我的音频格式和样本缓冲区的日志:

知道为什么CMSampleBufferSetDataBufferFromAudioBufferList总是返回错误