Come posso aggiungere un'immagine fissa a una composizione AV?
-
28-09-2019 - |
Domanda
ho un AVMutableComposition
con una traccia video e vorrei aggiungere un fermo immagine nella traccia video, da visualizzare per un certo tempo.L'immagine fissa è semplicemente un PNG.Posso caricare l'immagine come asset, ma questo è tutto, perché l'asset risultante non ha tracce e quindi non può essere semplicemente inserito utilizzando il comando insertTimeRange…
metodi.
C'è un modo per aggiungere immagini fisse a una composizione?Sembra che la risposta sia da qualche parte in Core Animation, ma il tutto sembra essere un po' al di sopra delle mie capacità e apprezzerei un esempio di codice o alcuni suggerimenti informativi.
Soluzione
OK. C'è una grande video chiamato Modifica media con AV Foundation WWDC che spiega molte cose . Non è possibile inserire immagini direttamente alla timeline AVComposition
, almeno io non ho trovato alcun modo per farlo. Ma durante l'esportazione o la riproduzione di un bene si può fare riferimento a un AVVideoComposition
. Questo non è forse un nome perfetto per la classe, in quanto permette di mixare tra le varie tracce video nel bene, molto simile AVAudioMix
fa per l'audio. E la AVVideoComposition
ha una proprietà animationTool
che ti permette di buttare strati Core Animation (CALayer
) nel mix. CALayer
ha una proprietà contents
che può essere assegnato un CGImageRef
. Non aiuta nel mio caso, potrebbe aiutare qualcun altro.
Altri suggerimenti
Ho anche bisogno di immagini fisse nella mia composizione.La mia linea di pensiero è leggermente diversa.Inserisci al volo filmati in nero al posto di quando dovrebbero apparire le immagini (forse uno di questi video sarebbe sufficiente).Aggiungi un riferimento al dizionario a ciascuno di questi inserti, collegando gli intervalli di tempo della composizione alle immagini desiderate in buona fede.Quando arriva l'intervallo di tempo corretto nel mio compositore personalizzato a tempo pieno, estrai l'immagine desiderata e dipingila nel buffer dei pixel di output, ignorando i fotogrammi neri in arrivo dalla composizione.Penso che sarebbe un altro modo di farlo.