Domanda

Sto scrivendo un file di film con AvassetWriter e AvassetWriterInputPixelBuffEradaptor.

Il cgimage che viene utilizzato per costruire il cvpixelbuffer sembra normale (come visualizzato sullo schermo), il film di output mostra l'immagine di input compressa nella metà superiore del frame. Tutte le larghezze, le altezze e i byte_per_row sono identiche (per il cgimage, le impostazioni di AvassetWriter e le impostazioni CVPixelBuffer).

Cosa potrebbe causare questo tipo di problema?

È stato utile?

Soluzione

Il problema deriva dal fatto che quando si forniscono le impostazioni a AvaSetWriterInputPixelBufferAdaptor per l'uso nella configurazione di CVPixelBufferPool per generare cvpixelBuffer, il CVPixelBufferPool apparentemente utilizza le impostazioni come una richiesta piuttosto che come impostazione effettiva. Il cvpixelBuffer che ottieni può avere una configurazione diversa. Questo potrebbe essere un bug nel codice di Apple, non ne sono sicuro.

In ogni caso è possibile leggere i byte effettivi per riga utilizzando CvPixelBuffergetBytesPerrow (CVPixelBuffer) e regolare il codice di conseguenza. Ha funzionato per me!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top