¿Relación de compresión Sugerida con H. 264?


Nota bene: Me doy cuenta de que esta es una pregunta inmensamente complicada con alrededor de un millón de niveles de matices que estoy tratando de reducir a un solo número...

Estoy a punto de emprender un gran proyecto de codificación de vídeo utilizando la codificación H. 264. Estamos tratando de crear múltiples perfiles de tasa de bits para acomodar la transmisión a través de conexiones de Internet, procesadores, dispositivos, etc.

En términos generales, ¿qué tipo de relación de compresión debería esperar ver (mientras permanecer dentro de un nivel razonable de calidad)?

Por ejemplo, un archivo de video de 640x360 (16: 9) píxeles a 24 fotogramas por segundo y color de 16 bits debería producir un archivo sin comprimir que es de aproximadamente 33 MB/s.

Me han dicho que, para ese archivo, 500 Kbits/segundo (o 62 KB/s) no es una tasa de bits de video irrazonable. Eso parece una locura-más de 530: 1 compresión? Eso es 99.8% de compresión. ¿Mis matemáticas están mal?

Sólo estoy buscando una guía exterior áspera para la calidad, como "más de 500x de compresión es una locura "o"menos de 400x es un desperdicio de ancho de banda". He buscado por todas partes, y nada me da ningún tipo de compresión esperada...

Author: Nuby, 2011-02-17

5 answers

En un documento bastante interesante llamado H. 264 Primer , se da una fórmula simple como una pista para calcular la tasa de bits del archivo de salida' ideal', basada en las características del video:

[ancho de la imagen] x [altura de la imagen] x [velocidad de fotogramas] x [rango de movimiento] x 0.07 =[tasa de bits deseada]

Donde el ancho y alto de la imagen se expresa en píxeles, y el rango de movimiento es un entero entre 1 y 4, 1 siendo movimiento bajo, 2 siendo movimiento medio y 4 siendo movimiento alto (movimiento al ser la cantidad de datos de imagen que está cambiando entre fotogramas, consulte el documento vinculado para obtener más información).

Así, por ejemplo, si tomamos un video de 1280x720 a 24 FPS, con movimiento medio (película con movimientos de cámara lentos, no muchos cambios de escena...), la tasa de bits ideal esperada sería:

1280 x 720 x 24 x 2 x 0,07 = 3.096.576 bps => aproximadamente 3000 kbps

Esto es puramente una pista, y en mi opinión, la única manera de encontrar con precisión la tasa de bits ideal es prueba por error:)

 55
Author: SirDarius,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-26 12:30:09

Variará drásticamente dependiendo del contenido de los videos de origen. Voy a llegar a eso en un momento.

640x360 no es tan grande. 512kbps es muy razonable y posiblemente estándar. Tal vez 768kbps si realmente está interesado en la calidad.

¿Cómo es esto posible? Una respuesta simplificada: Hay un par de técnicas y hechos sobre compresión de vídeo que hacen esto posible:

  1. No todos los fotogramas de vídeo estructura de datos en un H. 264 común (u otros CÓDECs para el caso) es una imagen completa. En su lugar, hay dos tipos que coloquialmente se conocen como
    1. Fotogramas clave : una representación completa de toda la imagen de vídeo
    2. Intra-frames: una descripción de los cambios en el marco anterior. Estos fotogramas generalmente constituyen la gran mayoría (80% -99%) de los fotogramas en un video.
  2. H. 264 es " lossy", al igual que muchos otros CÓDECs. No reproducen un pixel-by-pixel, frame-by-frame duplicado exacto del vídeo original. Ejemplo: Bloques con pérdida: Si todos menos un píxel en un área es del mismo color, el CÓDEC 'pierde' el píxel. Por lo tanto, en lugar de tener que almacenar información sobre cada píxel en un marco, el CÓDEC solo dice "x1, y1 a x2, y2 son todos de color x". Muy eficiente.

Todo es mucho más complejo que eso, con millones de diferentes enfoques, técnicas y algoritmos dentro de CÓDECs específicos y entre CÓDECs para que esto suceda.

Por lo tanto, de vuelta al comentario "Variará dramáticamente dependiendo del contenido de los videos de origen": La relación de compresión que verá, y la calidad resultante, dependerá significativamente de:

  • el contenido del vídeo
  • su tolerancia para artefactos (bloques, pérdida de color, pérdida de definición)
  • los parámetros del CÓDEC que establece y cómo establece [18]]}

Ejemplo: Un video de una puerta en una habitación (como una cámara de seguridad) con un fotograma clave cada diez minutos tendrá una relación de compresión increíblemente alta. Mis cálculos de la parte de atrás de la servilleta ponen ese escenario en una compresión de 15.000:1.

Dado que está comenzando en un gran proyecto de codificación de video, recomendaría un par de cosas para determinar cuál será su relación de compresión:

  • tome una muestra de los videos de origen que vamos a codificar. 100 o más son estadísticamente relevantes.
  • codifíquelos a varias velocidades de bits, con varios parámetros, para determinar qué características resultantes satisfacen sus necesidades

Cambiar los parámetros del codificador para hacer que los videos sean más pequeños también puede tener otros impactos:

  • mayores requisitos de reproducción de CPU
  • expectativas del CÓDEC del jugador. No todos los vídeos codificados con H. 264 pueden ser reproducidos por todos los jugadores
  • codificación más larga times
  • varios degradación de la calidad

Es un tema muy complicado. Buena suerte. Mi experimentada prueba "pulgar al viento" dice que estarás más que satisfecho con 512-768kbps para tu proyecto.

 20
Author: Stu Thompson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-01 03:21:17
Compression Ratio Rules of Thumb
Compression ratios to maintain excellent quality:
– 10:1 for general images using JPEG
– 30:1 for general video using H.263 and MPEG-2
– 50:1 for general video using H.264 / MPEG-4 AVC

De http://www.kanecomputing.co.uk/pdfs/compression_ratio_rules_of_thumb.pdf

 8
Author: Const,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-21 22:28:14

No olvide que la reproducción normal MPEG solo utilizará YUV 4:2:0. En profundidad de color de 8 bits cada píxel solo vale 16 bits (o 64 bits cada 4 píxeles). Por favor, solo el archivo RAW de la cámara utilizará una profundidad de 16 bits, ¡y debe valer millones de dólares!!Media alta película DVR solo puede proporcionar 12-14bit!!Y nadie usará H. 264 para almacenar RAW. H. 264 se dignó para el producto final.

En 640x360 / 24p YUV4: 2: 0 la tasa de bits valdrá:

  640x360x24x(8+4+4)/8 = 10.5MB/s

Para 500Kbps la compresión será solo 172:1. Es normal

Para la expansión de YUV4: 2: 0, léase:
http://en.wikipedia.org/wiki/Chroma_subsampling

 2
Author: Wilson Luniz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-08 05:19:49

Acabo de compartir mis conocimientos sobre la codificación con el entorno H264

En cuanto a la relación 450-512 kbits/segundo es mejor si se utiliza H264 con Alto 5.0 o Alto 7.0. Bueno, puedo sugerirte que para obtener una buena relación en equilibrio con la mejor calidad , la clave que realmente importa es jugar con el tamaño de la resolución. Resultado de la Resolución de Vídeo = 3/4 * Resolución de Vídeo Nativo / Raw

H264 tiende a perder detalles más si no comprime el marco en un poco más pequeño resolucion.

 0
Author: laruffii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-05 01:44:58