Acabo de sentir curiosidad por este formato HEVC x265 y lo probé en un flujo de video BDMV de 1920x1080i, uno codificado con una profundidad de 8 bits y luego otro codificado con una profundidad de 12 bits. Los resultados son que la salida de 8 bits fue más pequeña. Ambas salidas son 1280x720.
Me pregunto por qué es esto así.
Aquí están los MediaInfo:
8 bits:
Velocidad de cuadro: 23.976 fps
Espacio de color: YUV
Submuestreo de croma: 4:2:0
Profundidad de bits: 8 bits
Biblioteca de escritura: x265 1.9+54-291beccb6760:[Windows][GCC 5.3.0][64 bit] 8bit+10bit+12bit
Configuración de codificación: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra- depth=2 / tu-inter- depth=2 / me=3 / subme=3 / merange =57 / rect / amp / max-merge=3 / temporal-mvp / no-early-skip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu -lossless / no-restringido-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=23 / scenecut=40 / rc-lookahead=30 / lookahead -slices=4/bframes=8/bframe-bias=0/b-adapt=2/ref=4/limit-refs=2/limit-modes/weightp/weightb/aq-mode=1/qg-size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock / sao / no -sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60 / qpmin=0 / qpmax=51 / qpstep=4 / ipratio=1.40 / pbratio=1.30
12 bits: velocidad de fotogramas: 23,976 fps
Espacio de color: YUV
Submuestreo de croma: 4:2:0
Profundidad de bits: 12 bits
Biblioteca de escritura: x265 1.9+194-6d3849d648f0be5a:[Windows][GCC 5.3.0][64 bit] 12bit: KG7x [x265.ru]
Configuración de codificación: wpp / ctu=64 / min-cu-size=8 / max-tu-size=32 / tu-intra- depth=2 / tu-inter- depth=2 / me=3 / subme=3 / merange =57 / rect / amp / max-merge=3 / temporal-mvp / no-early-skip / recursion-skip / rdpenalty=0 / no-tskip / no-tskip-fast / strong-intra-smoothing / no-lossless / no-cu-lossless / no-restringido-intra / no-fast-intra / open-gop / no-temporal-layers / interlace=0 / keyint=250 / min-keyint=23 / scenecut=40 / rc-lookahead =30 / lookahead-slices=4 / bframes=8 / bframe-bias=0 / b-adapt=2 / ref=4 / limit-refs=2 / limit-modes / weightp / weightb / aq-mode=1 / qg -size=32 / aq-strength=1.00 / cbqpoffs=0 / crqpoffs=0 / rd=6 / psy-rd=2.00 / rdoq-level=2 / psy-rdoq=1.00 / no-rd-refine / signhide / deblock =0:0 / sao / no-sao-non-deblock / b-pyramid / cutree / no-intra-refresh / rc=crf / crf=18.0 / qcomp=0.60/qpmin=0/qpmax=51/qpstep=4/ipratio=1,40/pbratio=1,30
crf=18
rate-control produce archivos más grandes en modo de 12 bits. Si está tratando de encontrar algunas configuraciones de codificación que funcionen bien para algún contenido, no debe asumir que el mismo CRF en diferentes profundidades de bits será el mismo. (O el mismo SSIM o la misma calidad visual perceptiva).
No ha dicho nada sobre la calidad o la calidad por tamaño de archivo. Presumiblemente, los archivos más grandes también se ven un poco mejor, ya que el x265 de 12 bits tiene aproximadamente la misma calidad por tasa de bits que el x265 de 8 bits. (He probado con 10 vs. 8, pero no con 12).
CRF no es una configuración de calidad objetivo exacta. Entonces, si desea comparar configuraciones, use 2 pases con la misma tasa de bits para ambos y observe la calidad. Use SSIM o preferiblemente inspección visual humana. (A algunas personas les gusta pausar/acercar, pero no se limiten a hacer eso. Algunos tipos de artefactos/distorsiones se notan cuando se reproduce el video, pero muchos son mucho menos perceptibles. Pausa/acercamiento ayuda cuando verifica su impresión visual de " nitidez"/"más detalle", así que descubra qué le estaba dando esa impresión, y tal vez también otras cosas que debe buscar para ver si aún puede notarlo mientras reproduce el video).
Para codificaciones reales, una vez que encuentra la configuración que le gusta, CRF es excelente, pero no es bueno para comparar la calidad por tasa de bits de diferentes configuraciones de codificación.
Todavía puede haber algunas ganancias en la eficiencia de compresión para x265, pero definitivamente son más pequeñas, si es que existen. 10 o 12 bits incluso podrían verse un poco peor. Vea la discusión sobre doom9 , vinculada por Michael en un comentario. No he seguido las últimas discusiones, así que no estoy seguro de cuál es el consenso actual sobre x265 de 10 bits para video de 8 bits. Incluso si hay una pequeña ganancia, puede que no valga la pena la penalización de velocidad.
Definitivamente no está cerca de un factor de 12/8 como sugieren algunos comentaristas en base a "matemáticas simples". Un códec de video con pérdida como h.265 no es muy similar a una compresión simple sin pérdida como ZIP.
x264 se beneficia en general de ejecutarse en modo de 10 bits, incluso cuando la fuente original es de 8 bits, al igual que la pantalla final (pero nuevamente, no debe esperar que el mismo CRF proporcione la misma tasa de bits o la misma calidad en diferentes profundidades). H.265 de 8 bits tiene vectores de movimiento de mayor precisión que h.264 de 8 bits, por lo que parte del razonamiento no se aplica a x265.
Recuerde que tanto h.264 como h.265 almacenan la información en el video como coeficientes de dominio de frecuencia cuantificados. Con trellis / rdoq, incluso modifica la cuantificación para comprimir bien con el codificador de entropía final (por ejemplo, CABAC en h.264), por lo que la misma cantidad de bits puede representar la misma cantidad de información, si el codificador de entropía tenía 8- entrada de bits o de 12 bits. De alguna manera, 8 bits es solo un truco de velocidad.
Más bits significa que puede acercarse (menor error) sin dejar de tener algún error. Por lo tanto, el codificador tiene más opciones cuando intercambia distorsión frente a tasa de bits. Esta puede ser en parte la razón por la que x264 de 10 bits sufre menos de artefactos de "bandas" en gradientes: tiene más opciones para representar el coeficiente de CC o para tener valores pequeños en los coeficientes de CA.
Cuanto mayor sea la profundidad de bits de entrada (para una tasa de bits de salida determinada), más bits tendrá que desechar el codificador. Muchos de esos bits adicionales son ceros si su video original era de 8 bits. (La codificación con pérdida ya desecha una gran cantidad de bits, como desde 12 bpp por fotograma (para el submuestreo de croma YUV 4:2:0 con componentes de 8 bits) hasta 0,15 bits/píxel/fotograma y todavía se parece bastante a visualmente transparente, especialmente en resoluciones altas donde el video típico tiene su contenido de información distribuido en más píxeles).
Si va a cambiar la escala, es de suponer que pasar a 10 o 12 bits antes de cambiar la escala permitirá que la nueva escala mezcle píxeles con menos pérdida de información. (por ejemplo, un valor de 10 bits puede almacenar exactamente el promedio de cuatro valores de 8 bits).
gian
Adam Mann Pro
58YtQ2H83m17838963l61BU07Y8622
Michael Steinberg
Michael Steinberg
pedro cordes