问题标签 [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.
avfoundation - 如何向 AVAssetReader copyNextSampleBuffer 添加回调?
我正在尝试读取音频帧并使用 AVAssetReader 对其进行解码。我希望能够异步读取帧并在读取样本缓冲区时添加某种回调。所以调用后:
我希望能够从我的回调中引用和处理这个示例。那可能吗?如果没有,您能否建议我如何使用 AVFoundation/Core Audio 中的其他类来做到这一点?
ios - 当来自后台时,CMSampleBuffer 的音频格式会发生变化
我正在使用 AVFoundation 的 AVCaptureSession 捕获音频和视频,使用 AVCaptureVideoDataOutputSampleBufferDelegate 和 AVCaptureAudioDataOutputSampleBufferDelegate 来收集 CMSampleBuffers 并使用 AVAssetWriter 将它们写入文件。
我面临的问题是,如果用户进入后台并返回,则在录制时,CMSampleBuffer 的 AudioFormat 将从:
这个
对此:
这显然会导致 AVAssetWriter 中的 AudioInput 出现问题并导致写入失败
有谁知道发生了什么?
至于 CaptureSession 设置:
输入:前置/后置摄像头和内置麦克风
输出:AVCaptureVideoDataOutput & AVCaptureAudioDataOutput
开始会话时,我正在更改 videoInput 设备中的活动格式
谢谢,约阿夫
swift - 音频缓冲区和视频缓冲区的呈现时间不相等
我正在尝试使用 AVFoundation 创建一个进行实时视频和音频录制的应用程序。同样使用 AVAssetWriter 我将缓冲区写入本地文件。
对于CMSampleBuffer
我正在使用的视频,AVCaptureVideoDataOutputSampleBufferDelegate
输出AVCaptureSession
很简单。
对于音频CMSampleBuffer
,我正在从 AudioUnit 记录回调创建缓冲区。我计算音频缓冲区的呈现时间的方式是这样的:
self.sampleRate
是一个在录制开始时发生变化的变量,但大多数时候是48000
.
当CMSampleBuffers
同时获得视频和音频时,演示时间有很大的不同。
声音的 -CMTime(value: 981750843366125, timescale: 1000000000, flags: __C.CMTimeFlags(rawValue: 1), epoch: 0)
视频 -CMTime(value: 997714237615541, timescale: 1000000000, flags: __C.CMTimeFlags(rawValue: 1), epoch: 0)
这在尝试将缓冲区写入文件时会产生很大的差距。
我的问题是
- 我是否正确计算了音频缓冲区的呈现时间?如果是这样,我错过了什么?
- 如何确保音频和视频在同一时间区域内(我知道它们之间应该有微小的毫秒差异)
ios - 将 CMSampleBuffer 转换为 m3u8 并将其保存到路径?
我使用 replaykit 和广播上传扩展来获取设备屏幕录制。
通过上面的函数我可以得到录音的sampleBuffer。我如何将其转换为 m3u8 并保存?它需要是 m3u8,因为我将在本地服务器中托管文件,以便可以实时播放。
webrtc - How to send to Chrome-cast the CMSampleBuffer from iOS Replaykit?
I am stuck trying to send the CMSampleBuffer from Replaykit in iOS to the chrome-cast. I was able to make a WebRTC connection from my iOS app to my browser and convert the CMSampleBuffer to RTCVideoFrames to send them to the browser's screen and it works very well, but in the ChromeCast I get poor frames per second using WebRTC. My question is if there is any way to use a sender and receiver Chromecast app to send the video frames like the ChromeCast player does. Should I create a server so that I can use the Chromecast SDK sender? Thanks
swift - 修改 CVPixelBuffer
我正在使用下面的方法将绘图添加到像素缓冲区,然后将其附加到AVAssetWriterInputPixelBufferAdaptor
.
它适用于我的 Mac mini(macOS 12 beta 7),但drawingHandler
在我的 MacBook(macOS 11.5.2)上没有任何效果。
这段代码有什么问题吗?
swift - AssetReader/AssetWriter - CMSampleBuffer 和 CALayer
我正在对视频进行转码,以将 ML Vision 的绘图嵌入到新视频中。方法是使用avassetreader 和avassetwriter。我将 cmsamplebuffer 传递给视觉并获得结果。我用结果构建了 calayer。我不确定如何将 cmsamplebuffer 与 calayer 与图纸相协调。
这是片段
ios - 将 CMSampleBuffer 存储在数据结构中导致来自样本缓冲区委托的丢帧
背景
我想用 CoreML 分析 CMSampleBuffers 数组,如果满足条件,则将 CMSampleBuffers 数组输出为视频。我想CMSampleBuffer
一次在内存中保留大约 120 秒。
代码示例
控制台输出
问题说明
随着我向数组中添加越来越多CMSampleBuffer
的 s,最终,代码开始永远丢帧。AVCaptureSession
我发现这个结果非常令人困惑,我认为它支持我自己对它在数据处理方面的工作原理缺乏了解。也许因为这些CMSampleBuffer
s 被保留AVCaptureSession
不能再从某个池中取出?
问题
我如何存储CMSampleBuffer
s 以供以后使用而不会导致丢帧?我应该制作深拷贝吗?或者,iOS 生态系统中是否有另一种机制可以处理这个问题。
replaykit - 从 CMSampleBuffer 获取所有帧数据
我正在转换所有 CMSampleBuffers。并将它们发送到服务器进行服务器端渲染。在将数据发送到服务器之前,我正在使用此代码。但看起来我没有获得足够的帧(一个 10 秒的视频大约 27 帧?应该是每秒大约 30 帧,在列表中)。
我在做什么错?是。甚至可以从 CMSampleBuffers 获取数据?