es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en iOS, Swift, AVFoundation y AVAssetExportSession, no existe una forma directa de detectar si un video es HDR o no utilizando solo AVKit. Sin embargo, puedes utilizar la clase AVAsset para leer los metadatos del video y determinar si incluye metadatos de HDR. Específicamente, buscarías la clave kCMFormatDescriptionKey_Extensions en los metadatos del video y luego verificarías los metadatos CVImageBufferColorPrimariesKey y kCVImageBufferTransferFunctionKey para determinar si son HDR o no.

    A continuación se muestra un ejemplo de código Swift que demuestra este enfoque:

    let asset = AVAsset(url: fileURL)
    let tracks = asset.tracks(withMediaType: AVMediaType.video)
    if let track = tracks.first {
        let formatDescriptions = track.formatDescriptions
        for formatDescription in formatDescriptions {
            guard let extensions = CMFormatDescriptionGetExtensions(formatDescription) as? [String: Any] else {
                continue
            }
            if let primaries = extensions[kCVImageBufferColorPrimariesKey as String] as? String {
                if ["ITU_R_2020", "ITU_R_2100_PQ", "ITU_R_2100_HLG"].contains(primaries) {
                    print("Video en HDR")
                } else {
                    print("Video sin HDR")
                }
            }
        }
    }
    

    Este código primero obtiene la pista de video del recurso y luego itera a través de las descripciones de formato de la pista. Para cada descripción de formato, verifica si los metadatos incluyen las claves relacionadas con HDR (CVImageBufferColorPrimariesKey y kCVImageBufferTransferFunctionKey). Si los metadatos incluyen alguna de estas claves con valores específicos (por ejemplo, ITU_R_2020, ITU_R_2100_PQ, ITU_R_2100_HLG), se concluye que el video es HDR. De lo contrario, se concluye que el video no es HDR.

Comments are closed.