A Lenna le encanta verse bien, una modelo después de todo. Hay leyendas que agregarlo al título de un artículo relacionado con el procesamiento de datos visuales le da a +5 una posibilidad de ventajas.Sigo divulgando las características de los servicios de video. Hoy toma nota sobre las opciones de codificación y su selección.
Primera parteLa mayoría de los códecs ofrecen valores predeterminados bastante equilibrados, lo que le permite obtener un resultado normal sin una larga selección de parámetros. Sin embargo, cuando se trata de un gran archivo de material de video, limitaciones en la tasa de bits, consideraciones de compatibilidad con el equipo del cliente y un deseo razonable de mantener la calidad del original, todo se vuelve más interesante.
Desafortunadamente, el botón mágico "codificar muy bien" no se proporciona. Como el
caniuse analógico para codificar parámetros. Tiene que entender las características de los códecs.
Introducción: perfiles
Hay tantas configuraciones y parámetros para H264 que los propios desarrolladores, para no confundirse, decidieron hacer una lista de perfiles: configuraciones "buenas" para diferentes propósitos. Los perfiles estándar identificaron mucho; Además, al configurar sus propios parámetros de codificación, usted, de hecho, crea su propio perfil, confundiendo completamente a todos. Entonces, desafortunadamente, resultó como siempre.

Inicialmente, se crearon perfiles para determinar si el video final se reproducirá en el tipo de dispositivo deseado, pero ahora no existe una separación inequívoca de los jugadores por tipo de dispositivo y perfil.
En la práctica, destacaría, por el nivel de intensidad de los recursos de decodificación, tres grupos de parámetros:
- con CABAC deshabilitado; condicionalmente perfiles principales y de línea de base. Todavía se pueden usar para la transmisión sensible a retrasos;
- con CABAC habilitado; Perfil relativamente alto. Por todo La mayoría de los equipos modernos (y no tan) pueden jugar tal cosa. El aumento de la eficiencia en comparación con el principal - 20% +;
- con soporte para muestreo de diez bits y otros parámetros avanzados. Condicionalmente Hi10P. El problema con tales perfiles es la falta casi completa de soporte de hardware y los mayores requisitos para decodificar equipos; Los teléfonos, incluso los de gama alta, no pueden hacer frente a dichos archivos. Se puede utilizar para una biblioteca personal si tiene confianza en su equipo. Otro aumento del 10-20% en la eficiencia.
El concepto de perfiles para otros códecs no está tan desarrollado como en H264. Para ellos, podemos suponer que si el códec es compatible, entonces es totalmente compatible, y la restricción durante la reproducción solo puede ser una tasa de bits excesivamente alta u otro parámetro que esté claramente exagerado. Sin embargo, con la proliferación de decodificadores de hardware VP8 y VP9, la situación puede cambiar.
Ahora a los parámetros individuales.
Espacio de color
La elección del espacio de color prácticamente no tiene efecto en la eficiencia de la codificación; este parámetro podría dejarse a la elección del códec (es importante cuando se procesan datos sin codificar) si no fuera por una característica: muchos reproductores procesan la información del espacio de color de manera muy específica, de modo que para la mayoría de los usuarios el video puede mostrarse con distorsiones de color (en mayormente verde).
Para preservar los colores para la mayoría de los jugadores, se deben codificar diferentes videos H264 en diferentes espacios:
- para SD (ancho <1280) - BT.601
- para HD (ancho> = 1280) - BT.709
Hay un excelente
estudio de 2012. sobre este tema Desafortunadamente, la situación con tales errores está cambiando muy lentamente, y aunque algunos de los resultados de las pruebas de ese artículo ya no son relevantes, tales características aún deben tenerse en cuenta. Existe la posibilidad de que haya visto el video con los colores incorrectos todo este tiempo, y resulta que no fue una decisión del director.
El problema es conocido para los decodificadores H264; otros formatos pueden no tener este problema.
Velocidad de fotogramas
Si su fuente no son transmisiones de juegos o videos de acción, entonces tiene sentido limitar la velocidad de fotogramas superior a 25-30 fotogramas: cuantos menos haya, más datos quedan para describir un solo fotograma. Es mejor disminuir este valor por un factor, para que el salto de fotograma sea uniforme, de lo contrario, el video puede experimentar una ralentización.
Existe una velocidad de fotogramas variable. Trabajar con VFR es inconveniente por dos razones: en primer lugar, proporciona picos de velocidad de bits en áreas de alta frecuencia que vacían instantáneamente el búfer; segundo, VFR complica la preparación del plan de conversión, forzando el uso de parámetros Q (escribí sobre ellos en el primer artículo).
Tamaño de Gop
Los grupos de imágenes son bloques dentro de los cuales algunas imágenes pueden hacer referencia a los datos de otras. Un aumento en el tamaño de GOP mejora el rendimiento del códec a cambio de mayores requisitos de memoria. Los valores grandes son especialmente efectivos para archivos con el mismo tipo de movimientos cíclicos (ya sabes a lo que me refiero). Además, con valores grandes, puede haber problemas al rebobinar el video, porque Será necesario restaurar más datos.
El nombre del parámetro, así como las unidades de medida, pueden diferir de códec a códec; consulte la documentación.
Rebanadas
Para acelerar la decodificación (y la codificación), el video se puede dividir en partes de menor resolución. La idea es que procesar cuatro videos con una resolución de, por ejemplo, 1280x720 es más fácil que uno, pero 2560x1440. Tiene sentido en resoluciones superiores a FHD. Cuantas más partes, menor es la eficiencia del códec. Además, el uso de esta separación simplifica el procesamiento de subprocesos múltiples.
Píxeles anamórficos
Los píxeles rectangulares aparecen cuando la relación de aspecto y la relación entre el ancho y la altura de los píxeles difieren: DVD de pantalla ancha, donde el video 16: 9 tiene una resolución de 704 × 480 (3: 2 con IVA análogo y corregido por el viento). Reproducir tales videos no causará problemas, sin embargo, al codificar, debe tener en cuenta tanto la resolución como la relación de aspecto, de lo contrario es fácil convertir anamórficos a píxeles cuadrados estándar con pérdida de eficiencia (¡hasta ~ 35%!), O incluso obtener algo aplanado horizontalmente.
Control de bitrate
Hay tres modos principales de códecs asociados con la tasa de bits:
- bitrate constante, CBR, cuando la calidad cae en proporción a la complejidad de la escena;
- calidad constante, const Q VBR, cuando la tasa de bits aumenta en proporción a la complejidad de la escena;
- Velocidad de bits y calidad limitadas: VBR clásico.
Vale la pena señalar que la mayoría de los codificadores (incluido ffmpeg) no configuran los códecs en modo CBR cuando configuran una tasa de bits: los archivos son creados por VBR, con restricciones que no siempre se definen en la documentación (el modo CBR está habilitado, generalmente configurando la misma tasa mínima y máxima).
Para la reproducción en línea (y para la transmisión), VBR restringido es muy adecuado. Ofrece una mejor calidad que CBR y le permite ajustar la transmisión al canal de Internet.
La elección de maxrate / minrate depende del canal del cliente, una extensión de más del 20% es mejor no hacerlo.
Codificación multipaso
Es difícil predecir la distribución de datos en un archivo en modo VBR, los códecs tienen que adivinar lo que sucede no siempre. En el modo de pasadas múltiples, el códec primero asigna la velocidad de bits requerida y luego codifica. De esta manera, se mejora la calidad del video en escenas complejas y dinámicas (
ejemplo . Preste atención a la cantidad de elementos "muaré" y la cantidad de transiciones entre escenas). Como en el primer paso, el códec solo analiza el archivo fuente, contrario a la creencia popular, el procesamiento en este modo requiere no más del doble de tiempo, sino solo 10-15%.
-tune
Para varios tipos de material de origen, se han preparado varios ajustes preestablecidos que ajustan algunos parámetros básicos de codificación, como los niveles de filtro de desbloqueo, los parámetros de optimización psico-visual. El uso de estos preajustes mejora la percepción del video y funciona bien si conoce el tipo de fuente de antemano, o si tiene un conjunto estructurado de videos (en caso de procesamiento en masa).
Presets:
- película: para películas y todo con una estructura de marco compleja. Esta es definitivamente una película;
- animación: para videos con grandes áreas sólidas. Es decir, es mejor codificar con el preajuste de animación, y esto es película, a pesar del hecho de que la animación;
- imagen fija: para videos donde casi no hay movimiento; buena optimización para esas canciones en formato mp4, donde la portada del álbum es todo el fondo del video (alguien, diles que incluso flac no puede pesar 300 MB por 10 minutos);
- grano: para codificar fuentes "ruidosas", como cámaras de vigilancia;
- psnr / ssim: para evaluar la efectividad de otros parámetros del códec;
- fastdecode: perfil principal forzado para dispositivos débiles;
- latencia cero: como su nombre lo indica, para transmisión de baja latencia.
Formato de píxeles
El formato y el bitness afectan fuertemente cómo se comprimen y descomprimen los archivos, en qué forma se pierde la calidad. Los principales parámetros que describe el formato de píxeles son:
- una forma de descomponer el color en componentes: YUV, RGB;
- parámetros de submuestreo de color (¡oh, cómo! el submuestreo de croma es más familiar) cuando algunos componentes de color se guardan con una resolución más baja;
- Profundidad de componentes de color en bits.
Una elección consciente del formato de píxel requiere un análisis, una recopilación de material por separado y depende en gran medida del tipo de material de origen.
Brevemente:
- no todos los códecs (y, lo más importante, los decodificadores) admiten formatos posibles;
- trabajar con algunos formatos requiere más recursos: Hi10P difiere de solo un perfil alto en esto;
- trabajar con formatos submuestreados puede dar un aumento notable en la eficiencia de compresión, pero es más difícil controlar la pérdida de calidad.
Entrelazado
El entrelazado se inventó para duplicar la velocidad de fotogramas percibida a un costo mínimo: la velocidad de bits y la resolución son las mismas, pero la frecuencia es mayor. Sin embargo, con un movimiento rápido, los dientes se vuelven visibles: las líneas del marco anterior. Puede deshacerse del efecto sin soltar cuadros y sin reducir la resolución vertical con filtros, pero reducirán la claridad. Si el video se reproducirá en el navegador, es mejor filtrar el entrelazado durante la codificación, ya que El filtrado en tiempo real en el cliente no dará los mejores resultados visuales.
Poniendo todo junto
Ejemplo para x264:
ffmpeg -i [] -c:v libx264 -b:v [bitrate]
Por supuesto, en un artículo no fue posible cubrir todo, pero estoy seguro de que este material será suficiente para mejorar la calidad de muchos videos.
Lea la documentación y experimente.
Materiales:
ffmpeg.org/ffmpeg-all.htmlen.wikipedia.org/wiki/H.264/MPEG-4_AVC#Profilesen.wikipedia.org/wiki/Chroma_subsamplingen.wikipedia.org/wiki/Color_spaceen.wikipedia.org/wiki/YUVAdemás del
ejemplo del último artículo, aprendí sobre otra instalación de mi código:
haga clic . Traté de tomar ejemplos en el artículo de estos sitios, pero a pesar de esto:
* No tengo una relación directa con los autores de los sitios mencionados y no puedo compartir sus puntos de vista y opiniones. No puedo comentar sobre las decisiones sobre quién y cómo se otorga el acceso al código.Listo para responder preguntas.