设置CMSampleBuffer样本附件(Swift)

Tom*_*cik 7 h.264 ios swift

我正在尝试为kCMSampleAttachmentKey_DisplayImmediately我的每个样本设置CMSampleBuffer.

到目前为止,我已经试过越来越词典(Dictionary<NSObject, AnyObject>,NSDictionary,CFDictionary),并调用CMSetAttachment上都CMSampleBuffer和它的附件.

用于检索我使用的附件CMSampleBufferGetSampleAttachmentsArray.

任何想法如何在Swift中设置这些标志?

Tom*_*cik 5

这是适用于Swift 4(应该与3配合使用)的解决方案(可能远非完美)。

func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer) {
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
        to: CFMutableDictionary.self)
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
    CFDictionarySetValue(dictionary, key, value)
}
Run Code Online (Sandbox Code Playgroud)