Red de conocimiento informático - Consumibles informáticos - (2)Descripción básica de la edición de vídeo.

(2)Descripción básica de la edición de vídeo.

El uso de AVFoundation para la edición de video comienza desde lo básico e implica la implementación y combinación independiente de cada módulo funcional de edición de video, así como el diseño del marco de edición de video.

AVFoundation es uno de varios marcos que los desarrolladores de iOS pueden utilizar para reproducir y crear medios audiovisuales basados ​​en el tiempo. Proporciona una interfaz para comprobar, crear, editar o grabar archivos multimedia y también hace que los datos de vídeo en tiempo real obtenidos del dispositivo sean controlables. La siguiente imagen es la arquitectura de AVFoundation en iOS.

El objeto de edición de vídeo (AVAsset) incluye varias pistas de recursos, incluidas pistas de vídeo, pistas de audio, subtítulos, etc. La edición consiste en trabajar con los recursos de estas pistas.

Cuando se utiliza AVFoundation para la edición de vídeo, se utiliza una variable AVMutableComposition, que es una herramienta de descripción y combinación de recursos de vídeo. La clase base es AVAsset, que se puede utilizar para editar, reproducir y exportar. AVMutableComposition durante la edición de video es como la imagen a continuación, contiene varias pistas y el video de cada pista puede provenir de diferentes recursos.

AVAsset es una clase abstracta e inmutable que define la presentación híbrida de recursos multimedia. Puede proporcionarnos a los desarrolladores una forma sencilla y unificada de lidiar con los medios basados ​​en el tiempo. No es un recurso mediático, pero puede utilizarse como contenedor para medios basados ​​en el tiempo.

Al importar recursos de vídeo y audio desde álbumes de fotos y dispositivos locales, se suele utilizar su subclase AVURLASET. Después de inicializar AVURLASET, el sistema en realidad no carga datos de forma sincrónica, por lo que es necesario cargarlos antes de llamar o al inicializar AVURLASET.

Al inicializar desde la URL, puedes escribir:

Obtener del álbum:

Esto cargará nuestros recursos y podrás usar directamente atributos como duración en el futuro.

Lo más importante en AVAsset es la pista de recursos, que puede obtener pistas de vídeo, audio y otras.

AVAssetTrack es un seguimiento de recursos, más tarde llamado seguimiento de recursos. Puede ser una pista como vídeo, audio o subtítulos. Puede obtener varios recursos de AVAsset.

Cabe señalar que al obtener el seguimiento de recursos, debe asegurarse de que se haya cargado el seguimiento de recursos.

Los tipos de seguimiento de recursos son:

Normalmente, necesitamos obtener dos seguimientos de recursos: AVMediaTypeVideo y AVMediaTypeAudio. En un recurso de vídeo, normalmente habrá una pista de vídeo, una pista de audio o puede haber varias pistas, principalmente dependiendo del vídeo. La mayoría de los recursos de vídeo obtenidos del álbum solo tienen una pista.

Después de comprender los recursos de los medios y las trayectorias de los recursos, comenzamos a comprender el contenido relevante de la combinación de edición de video:

La siguiente figura es el diagrama de herencia de AVMutableComposition. que AVMutableComposition hereda de AVAsset. De hecho, también es un recurso de vídeo, pero podemos combinar vídeos, añadir pistas de audio, añadir transiciones, etc. Es la categoría más importante en la edición de vídeo.

El diagrama de herencia de clases de las pistas de recursos es el siguiente:

AVMutableComposition es una colección de una o más pistas. Cada pista almacena la información del archivo del medio de origen según la línea de tiempo. como audio y vídeo.

Cada pista consta de una serie de segmentos de pista, y cada segmento de pista almacena una parte de los datos multimedia del archivo de origen, como URL, identificador de pista, mapeo de tiempo, etc.

Podemos agregar múltiples AVMutableCompositionTracks y necesitamos especificar el tipo de medio y el trackID.

El proceso de síntesis de un nuevo vídeo usando AVMutableComposition es el siguiente.

Utilizando la clase AVMutableAudioMix, puedes realizar procesamiento de audio personalizado en pistas de audio sintetizadas.

AVMutableAudioMix puede especificar el volumen de cualquier pista de audio en cualquier momento a través de los parámetros de entrada de avmutableAudimix.

También podemos utilizar AVMutableVideoComposition para procesar directamente la pista de vídeo en la composición. Al procesar una sola composición de video, puede especificar su tamaño de renderizado, escala, velocidad de fotogramas y otros parámetros, y generar el archivo de video final. A través de algunas instrucciones de síntesis de video (instrucciones de síntesis de video AVMutable, etc.), podemos modificar el color de fondo del video y aplicar instrucciones de capa.

Estas instrucciones de capa (instrucciones de capa de composición de video variable, etc.) se pueden usar para implementar transformaciones gráficas, agregar gradientes gráficos, transformaciones de transparencia y aumentar los gradientes de transparencia en la pista de video de la composición. Además, puede aplicar efectos de animación en el marco Core Animation configurando la propiedad AnimationTool de la composición del video.

Podemos utilizar AVVideoCompositing para procesar cada fotograma del vídeo, incluyendo añadir filtros, transiciones y otras funciones. También podemos combinar GPUImage para la transición de filtros y opengl para procesar cada cuadro de imagen. El grado de libertad es muy alto y lo presentaremos en detalle en el artículo sobre la transición de filtros.

Los pasos de exportación son relativamente simples. Puede exportar el producto final simplemente asignando el objeto de procesamiento creado en los pasos anteriores al objeto de clase de exportación.

La definición de CMTime es una estructura del lenguaje C que representa el tiempo en forma de fracción, el valor representa el numerador, la escala de tiempo representa el denominador, el valor/escala de tiempo = segundos, las banderas son una máscara de bits. indicando la especificación del estado. Al crear tiempo, normalmente elegimos 600 como escala de tiempo.

Donde inicio representa el punto de inicio del tiempo y duración en representa la duración del rango de tiempo.

Podemos usar AVAssetImageGenerator para obtener la miniatura del video. Solo necesitamos pasarlo dentro del tiempo especificado para obtener la miniatura en este momento.

Podemos pasar una matriz en un momento específico para obtener miniaturas en lotes.