VideoToolbox не создает сеанс кодирования для mpeg4 в Swift 3.0

Я столкнулся с проблемой создания сеанса сжатия для кодировщика MPEG4 с помощью VideoToolbox после миграции на Swift 3.0. До миграции все работало нормально.

Вот мой обновленный код:

    let imageAttributes:[NSString: AnyObject] = [
            kCVPixelBufferPixelFormatTypeKey: Int(colorScheme) as AnyObject,
            kCVPixelBufferIOSurfacePropertiesKey: [:] as AnyObject,
            kCVPixelBufferOpenGLESCompatibilityKey: true as AnyObject,
            kCVPixelBufferWidthKey: outputWidth as AnyObject,
            kCVPixelBufferHeightKey: outputHeight as AnyObject,
            ]

     let imgeAttributesDictionary: CFDictionary = imageAttributes as CFDictionary

     let encoderType = kCMVideoCodecType_MPEG4Video


     var status = VTCompressionSessionCreate(kCFAllocatorDefault, Int32(outputWidth), Int32(outputHeight), encoderType, nil, imgeAttributesDictionary, nil, { (outputCallbackRefCon: UnsafeMutableRawPointer?, sourceFrameRefCon: UnsafeMutableRawPointer?, status: OSStatus, infoFlags: VTEncodeInfoFlags, sampleBuffer: CMSampleBuffer?) -> Void in

                VideoEncoder.compressionCallback(outputCallbackRefCon: outputCallbackRefCon, sourceFrameRefCon: sourceFrameRefCon, status: status, infoFlags: infoFlags, sampleBuffer: sampleBuffer)

        }, nil, &session)

И каждый раз я получаю ошибку состояния -12908 (kVTCouldNotFindVideoEncoderErr). Интересно, что та же конфигурация, но с

 let encoderType = kCMVideoCodecType_H264

работает идеально.

Кто-нибудь знает, что здесь происходит?

Это мой связанный вопрос об обновлении кода для конфигурация кодировщика до Swift 3.0


person JULIIncognito    schedule 11.10.2016    source источник
comment
Я столкнулся с той же проблемой с MJPEG, почему его не существует   -  person Steven    schedule 09.06.2020