ios - 如何在 swift 中使用 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer

标签 ios swift audio

我想知道如何在 swift 中实现 Core Media 方法 CMSampleBufferGetAudioBufferList

我正在关注 this教程,它使用该方法从 CMSampleBuffer 中获取 AudioBuffers 列表。

我试了一遍又一遍,但编译器一直给我通用的

Cannot invoke CMSampleBuffer...Buffer with an argument list of type ...

这不是很有帮助。

我已经看过了 this StackOverflow 问题,但那里唯一的答案似乎引发了我一直遇到的完全相同的错误。

基本上,我只想有人告诉我如何让这个方法在 swift 中无错误地编译。

最佳答案

我假设您可以在委托(delegate)方法中访问 sampleBuffer,例如 captureOutput(captureOutput: AVCaptureOutput!, didOutputSampleBuffer sampleBuffer: CMSampleBuffer!, fromConnection connection: AVCaptureConnection!)

我已经为 CMSampleBuffer 方法苦苦挣扎,我同意如何让它们编译并不明显。

    var sizeOut = UnsafeMutablePointer<Int>.alloc(1)
    var listOut = UnsafeMutablePointer<AudioBufferList>.alloc(1)
    let listSize: Int = 10

    var blockBufferOut: Unmanaged<CMBlockBuffer>?


    CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer(sampleBuffer, sizeOut , listOut, listSize, kCFAllocatorDefault, kCFAllocatorDefault, UInt32(2), &blockBufferOut)

然后您需要在 block 缓冲区上调用takeRetainedValue,并处理您的指针以手动释放它们。

关于ios - 如何在 swift 中使用 CMSampleBufferGetAudioBufferListWithRetainedBlockBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32240726/

相关文章:

IOS应用程序图标名称仍然需要@2x?

iphone - 处于暂停状态的应用程序的 NSNotificationcenter

ios - 寻找 IPFW 以外的替代解决方案来降低互联网连接速度

javascript - 声音不播放并且控制台不工作

audio - 如何阻止音乐轨道在 Libgdx 中循环播放

c# - 更改AudioSource音量

ios - 向堆栈 View 中存在的 ImageView 添加按钮

ios - 将指南针指向一个方向

arrays - Swift - 如何计算特定值数组中的项目?

arrays - 是否可以在不激活其 DidSet 属性的情况下使数组为空?