¿Cómo agrego una imagen fija a un AVComposition?
-
28-09-2019 - |
Pregunta
Tengo una AVMutableComposition
con una pista de vídeo y me gustaría añadir una imagen fija en la pista de vídeo, que se mostrará durante un tiempo determinado. La imagen fija es simplemente un archivo PNG. Puedo cargar la imagen como un activo, pero eso es todo, porque el activo resultante no tiene ningún pistas y por lo tanto no se puede insertar simplemente utilizando los métodos insertTimeRange…
.
¿Hay una manera de añadir imágenes fijas a una composición? Parece que la respuesta está en algún lugar Core Animation, pero todo parece ser un poco por encima de mi cabeza y yo apreciaría un ejemplo de código o algunas indicaciones de información.
Solución
OK. Hay un gran video llamado Edición de medios con la Fundación AV de la WWDC que explica muchas cosas . No se puede insertar imágenes directamente a la línea de tiempo AVComposition
, al menos no he encontrado ninguna manera de hacerlo. Pero cuando se exporta o jugando un activo puede hacer referencia a un AVVideoComposition
. Eso no es tal vez un nombre perfecto para la clase, ya que le permite mezclar entre varias pistas de vídeo en el activo, muy parecido a AVAudioMix
hace para el audio. Y el AVVideoComposition
tiene una propiedad animationTool
que le permite tirar capas Core Animation (CALayer
) en la mezcla. CALayer
tiene una propiedad contents
que se puede asignar un CGImageRef
. No ayuda en mi caso, podía ayudar a otros.
Otros consejos
También necesita imágenes fijas en mi composición. Mi línea de pensamiento es un poco diferente. Inserción en la marcha películas de negro en lugar de cuando las imágenes deberían publicarse (posiblemente una de esas vídeo sería suficiente). Añadir una referencia de diccionario para cada uno de tales inserto, que une la composición de tiempo-intervalos a las imágenes de buena fe deseados. Cuando el intervalo de tiempo correcto llega a mi a tiempo completo compositor personalizada, tire de la imagen deseada y la pintura que en el búfer de píxel de salida, haciendo caso omiso de los marcos de color negro entrantes de la composición. Creo que eso sería otra manera de hacerlo.