¿Cuáles son los mejores códecs y opciones de codificación para un video de secuencia de imágenes?

Estoy tratando de hacer un video a partir de una secuencia de imágenes, donde cada cuadro dura un segundo.

La secuencia de imágenes contiene el mismo objeto tomado desde diferentes distancias. Supongo que la mayoría de los convertidores de video predeterminados se optimizan para el movimiento, pero en este escenario, necesito obtener el menor tamaño de archivo sin cambiar la velocidad de fotogramas.

¿Qué códec (H.264, VP8, VP9) me puede dar la mejor relación entre tamaño y calidad?

¿También hay indicadores para H.264 que pueda habilitar para optimizar para este caso?

¿Qué software estás usando y en qué formato están tus archivos?
@LetTheWritersWrite Estoy usando VirtualDub para hacer una .avisalida del video, y luego freno de mano para codificar .aviactualmente .mp4. En cuanto al formato, necesitaré mp4owebm

Respuestas (2)

Ocasionalmente hago un video a partir de imágenes de diapositivas. Encuentro que obtengo la mejor calidad y compresión al poner las imágenes en la línea de tiempo en su editor de video preferido (yo uso Vegas Pro 13), guardándolas como un jpeg de movimiento*, luego uso ffmpeg para convertir eso a H264. Yo uso -crf 28, que probablemente se llama "calidad constante" en Handbrake. Con una resolución de 1024x768, obtengo fácilmente tasas de bits inferiores a 100 kbps y se ven muy bien. Puede aumentar el valor crf para obtener más compresión o disminuirlo para obtener una mejor calidad, para que pueda ajustarlo a sus gustos.

Con este método anterior, apostaría que H264 y VP8 son comparables. VP9 probablemente sea mejor, pero no funciona en todo y lleva mucho más tiempo codificarlo.

Mi teoría de por qué esto funciona:

Motion jpeg es solo compresión intra-frame. Cada cuadro individual se comprime como una imagen y luego se agrega a la secuencia; no hay compresión entre fotogramas (compresión entre fotogramas). No tiene I-frames ni ninguna de esas cosas complicadas. Entonces, durante un segundo completo en su video, todos los cuadros son idénticos, no solo "se ven iguales". Son técnicamente idénticos.

H264 entonces tiene mucho poder para comprimir el jpeg de movimiento. Ve una cadena de cuadros idénticos, luego hace el equivalente de guardar el primer cuadro por completo y luego usa "cuadros de referencia" casi sin datos para el resto.


*Motion jpeg será un archivo relativamente grande. Coincidentemente, cuando grabo una presentación de diapositivas, inicialmente codifico como jpeg en movimiento porque la mayor parte de la presentación serán diapositivas estáticas.

VP9 le brindará la mejor relación calidad-tamaño, pero también puede obtener resultados bastante buenos con H.264.

Con el fin de maximizar la eficiencia de la compresión, si cada imagen está activa durante exactamente un segundo (o exactamente dos segundos, o exactamente tres segundos, o exactamente , etc.), haga que la velocidad de fotogramas sea de 1,00 FPS y dígale al codificador que no use P -frames o B-frames (también conocido como "marcos de referencia") y establezca su GoP en 1. Después de eso, ejecute con codificación de calidad constante y use un factor de velocidad que le proporcione un nivel aceptable de calidad con un tamaño de archivo aceptable.

dígale al codificador que no use fotogramas P o fotogramas B (también conocidos como "fotogramas de referencia") --> Los fotogramas I son los fotogramas de referencia canónicos. Los fotogramas P y B son fotogramas previstos y, en los códecs modernos, también pueden servir como referencia para otros fotogramas P y B. Con un GOP de 1, no hay estimación/compensación de movimiento y la compresión será peor. Además, algunos jugadores no pueden manejar un video con 1 FPS. 5tiende a ser el mínimo seguro. Con x264, al menos, los fotogramas predichos idénticos ocupan muy poco espacio, por lo que aumentar la velocidad de fotogramas no es un gran problema.
Es probable que un FPS de 1 no funcione, como ya se dijo, entonces tampoco proporcionaría mucho beneficio sobre algo como 15. Si 15 cuadros son idénticos, la configuración correcta puede comprimir muy bien.