¿Códec de video para animación simple?

Estoy generando una animación en Matlab, compuesta de diagramas simples. Las imágenes se caracterizan por estructuras finas, fuertes contrastes y colores discretos en su mayoría, por ejemplo, hay líneas negras anchas de pocos píxeles, puntos o pequeños parches de color uniforme, texto antialias alto de pocos píxeles, etc. Aquí hay una captura de pantalla de un marco típico :

ingrese la descripción de la imagen aquí

Lo que cambia de cuadro a cuadro son los parches de color a la izquierda, el tiempo ("t =") y la posición del punto negro en el panel derecho.

El uso de un códec de video estándar en este que fue diseñado para imágenes fotográficas en movimiento de cuadro completo genera fuertes artefactos incluso con una compresión débil. Sin embargo, sin compresión, el archivo de video se vuelve inmanejablemente grande.

Mi pregunta: ¿Hay algún códec de video que esté optimizado para este tipo de material? Si es posible, sería óptimo si se incluye un codificador en ffmpeg y si hay un decodificador (implementación de códec) disponible para Windows.

Necesitará algunos detalles: ¿qué comando ffmpeg usó para generar el video de mala apariencia? ¿Cuál es la tasa de bits objetivo o el tamaño de archivo que está buscando? ¿Necesita un códec cuyo decodificador se pueda distribuir libremente o es una solución comercial?
@Mulvya, gracias por tu comentario. Video de mala apariencia: probé H.264/mp4, y aumentar la tasa de bits solo ayudó cuando el video comprimido se volvió casi tan grande como el archivo original. tamaño del archivo: mi video sin comprimir tiene un tamaño de 25 GB, que no puede, por ejemplo, transferirse convenientemente a través de Internet. Como el tamaño por debajo de 500 MB sería bueno. Decodificador: Óptimamente sería algo que se puede distribuir libremente, por ejemplo, algo compatible con VLC. – Aparte del problema al que me enfrento ahora mismo, me interesarían algunos consejos generales sobre cómo tratar con este tipo de material.
Yo mismo hice algunos progresos y publicaré una respuesta tentativa pronto. Estaría muy interesado en los comentarios sobre cómo mejorar eso.

Respuestas (2)

Leí un poco e hice algunos experimentos con códecs sin pérdidas, obteniendo resultados decentes. Me interesaría recibir comentarios sobre esto, especialmente si hay alternativas sin pérdida o con pérdida que pasé por alto.

Probé los siguientes códecs/formatos en ffmpeg:

  • Movimiento sin pérdidas JPEG2000 / AVI

    ffmpeg -i test.avi -vcodec jpeg2000 -strict -2 -pred 1 test_jpeg2000.avi

    relación de compresión 19,59%

  • VP9 sin pérdidas / WebM

    ffmpeg -i test.avi -vcodec vp9 -lossless 1 test_vp9.webm

    relación de compresión 0,52%

  • HuffYUV / AVI

    ffmpeg -i test.avi -vcodec huffyuv test_huffyuv.avi

    relación de compresión 37,42%

  • H.264 / MP4 sin pérdidas

    ffmpeg -i test.avi -vcodec h264 -qp 0 -preset veryslow test_h264.mp4

    relación de compresión 0,53%

Dado que HuffYUV no funcionó bien, lo excluí de otras pruebas.

Luego probé la compatibilidad con la reproducción en Linux y Windows, probando mplayer, xine, vlc, chrome y firefox en Linux (pruebas de Debian) y vlc, windows media player, chrome y firefox en Windows (8.1). Incluí navegadores porque WebM está diseñado específicamente para video web. Resultados:

  • Movimiento sin pérdidas JPEG2000 / AVI

    juega en Linux con mplayer

  • VP9 sin pérdidas / WebM

    juega en Linux con vlc y chrome y en Windows con chrome y firefox

  • H.264 / MP4 sin pérdidas

    se reproduce en Linux con mplayer, vlc y chrome, y en Windows con vlc y chrome

Que un video se "reproduzca" significa que el reproductor lo admite desde el primer momento y que la reproducción es correcta. Encontré varios casos en los que el video era "compatible", pero la reproducción tenía errores.

Aunque Lossless VP9 tiene la mejor relación de compresión (por un pequeño margen), por el momento decidí usar Lossless H.264 porque tiene mejor soporte de reproducción.

¿Has buscado en H.265 (también conocido como x265)? Nunca he codificado con él, pero los resultados parecen muy prometedores. El video animado se comprime aproximadamente un 50% más que H.264 (los resultados variarán, por supuesto). La calidad sigue siendo fenomenal. El soporte de reproducción probablemente será peor, ya que es un códec más nuevo.
Tengo buenos resultados con un .flvcódec On2 VP6en Adobe Media Encoder. Aproximadamente 200 Mb por 40 minutos de presentación de diapositivas 640x480 1fs
Probablemente ya no sea relevante, pero ¿qué pasa con los formatos APNG y MNG basados ​​en PNG? ¿Y WebP?
Realmente no he investigado más desde entonces. Si no recuerdo mal, consideré MNG, pero nunca llegó a despegar. No había oído hablar de APNG. Y no sabía que WebP admite animación sin pérdidas.
@Christian, este littlesvr.ca/apng/gif_apng_webp5.html podría interesarle. Si por casualidad investiga esto más a fondo, ¡me gustaría una respuesta alternativa!

Si está de acuerdo con los formatos que requieren codificadores propietarios, le sugiero que consulte RealVideo . No he usado este formato por un tiempo, pero recuerdo que hace 10 años podía comprimir dibujos animados de DVD en archivos RMVB de <500 MB con muy poca pérdida de calidad, mientras que los archivos XviD de tasa de bits similar eran extremadamente bloqueados.

Otro códec que suena adecuado, al menos en teoría, es QuickTime RLE .

Sorprendentemente, aunque parece haber una investigación moderna sobre códecs de video similares a dibujos animados, ninguno de los esfuerzos pasó de la etapa de "prueba de concepto".

Supongo que su animación de MATLAB será similar a los dibujos animados: se usan pocos colores, bordes nítidos entre los colores, solo una pequeña parte del marco cambia activamente, etc.