首页 > 解决方案 > 将 BGRA 帧转换为 i420 或 Rgba ios Swift , objc

问题描述

我从提供 BGRA 格式的帧的 lib(banuba) 获取帧然后我必须以 i420 r YVU 格式发送帧(vidyo) lib。

我怎样才能转换这些帧

我用过的代码

func applyFlipToPixelBuffer(_ pixelBuffer: CVPixelBuffer) {        
        let width = CVPixelBufferGetWidth(pixelBuffer)
        let height = CVPixelBufferGetHeight(pixelBuffer)
        let bytesPerRow = CVPixelBufferGetBytesPerRow(pixelBuffer)
        
        CVPixelBufferLockBaseAddress(pixelBuffer, [])
        
        defer {
            CVPixelBufferUnlockBaseAddress(pixelBuffer, [])
        }
        
        guard let srcData = CVPixelBufferGetBaseAddress(pixelBuffer) else {
            print("Error: could not get pixel buffer base address")
            return
        }
        

        var sourceBuffer = vImage_Buffer(data: srcData,
                                         height: vImagePixelCount(height),
                                         width: vImagePixelCount(width),
                                         rowBytes: bytesPerRow)
        
        guard let destinationData = malloc(height * bytesPerRow) else {
            print("Error: out of memory")
            return
        }
        
        defer {
            free(destinationData)
        }
        
        var destinationBuffer = vImage_Buffer(data: destinationData,
                                              height: vImagePixelCount(height),
                                              width: vImagePixelCount(width),
                                              rowBytes: bytesPerRow)
        
        vImageConvert_BGRA8888toRGB565(&sourceBuffer, &destinationBuffer, UInt32(kvImageNoFlags))

       
    }

但它不起作用。

标签: iosswiftobjective-ccamera

解决方案


推荐阅读