Cómo convertir videos H.265 de 10 bits a H.264 sin perder calidad

Tengo un archivo MPEG-H Part2/HVEC (H.265) .mkv (Planar 4:2:0 YUV LE de 10 bits). Dado que mi proyector LG PF 1500 no lee H.265 sino H.264, me gustaría convertirlo (HVEC -> H.264). Creo que handbrake es un software útil para hacerlo.

¿Qué configuración debo usar para obtener un archivo H.264 con la misma calidad que el original (HVEC)?

Creo que tengo que elegir H.264 de 10 bits como codificador de video. Sin embargo, no estoy seguro acerca de la configuración de Calidad (RF). ¿Cómo sé cuál es la configuración de calidad HVEC y cómo puedo elegir una igual para H.264?

Esta es la información extraída con MediaInfo:

Formato: Matroska Versión del formato
: Versión 4 Tamaño del archivo: 1,48 GiB Duración: 52 min 46 s Tasa de bits general: 4 012 kb/s Fecha codificada
: UTC 2018-05-26 19:19:57 Aplicación de escritura: mkvmerge v20.0.0 ( 'I Am The Sun') Biblioteca de escritura de 64 bits
: libebml v1.3.5 + libmatroska v1.4.8 Interfaz de escritura
: StaxRip v1.7.0.6

ID de video : 1 Formato
: HEVC Formato/Información : Codificación de video de alta eficiencia Perfil de formato : Principal 10@L4@Main ID de códec : V_MPEGH/ISO/HEVC Duración : 52 min 46 s Velocidad de bits : 3 529 kb/s Ancho : 1
920 píxeles Altura: 1 080 píxeles Relación de aspecto de la pantalla: 16:9 Modo de velocidad de fotogramas
: Velocidad de fotogramas constante: 23,976 (24000/1001) FPS Espacio de color: YUV Submuestreo de croma: 4:2:0 Profundidad de bits
: 10 bits Bits/(Pixel*Frame) : 0,071 Tamaño de transmisión : 1,30 GiB (88 %) Biblioteca de escritura : x265 2.7+346-69aafa6d70ad:[Windows][GCC 7.3.0][64 bit] 10bit Configuración de codificación: cpuid= 1111039 / frame-threads=2 / numa-pools=4 / wpp / no-pmode / no-pme / no-psnr / ssim / log-level=2 / input-csp=1 / input-res=1920x1080 / entrelazado= 0/total-frames=75917/level-idc=0/high-tier=1/uhd-bd=0/ref=3/no-allow-non-conformance/no-repeat-headers/anexob/no-aud/ no-hrd / info / hash=0 / no-temporal-layers / open-gop / min-keyint=23 / keyint=250 / gop-lookahead=0 / bframes=8 / b-adapt=2 / b-pyramid / bframe-bias=0 / rc-lookahead=50 / lookahead-slices=6 / scenecut=40 / radl=0 / no-intra-refresh / ctu=64 / min-cu-size=8 / no-rect / no- amp / max-tu-size=32 / tu-inter-profundidad=1 / tu-intra-profundidad=1 / limit-tu=0 / rdoq-level=0 / dynamic-rd=0.00 / no-ssim-rd / signhide / no-tskip / nr-intra=0 / nr-inter=0 / no-constrained-intra / no-strong-intra-smoothing / max-merge=3 / limit-refs= 3 / no-limit-modes / me=3 / subme=3 / merange=57 / temporal-mvp / weightp / no-weightb / no-analyze-src-pics / deblock=0:0 / sao / no-sao- non-deblock / rd=3 / no-early-skip / no-rskip / no-fast-intra / no-tskip-fast / no-cu-lossless / no-b-intra / no-splitrd-skip / rdpenalty= 0 / psy-rd=2.00 / psy-rdoq=0.00 / no-rd-refine / sin pérdidas / cbqpoffs=0 / crqpoffs=0 / rc=crf / crf=20.0 / qcomp=0.60 / qpstep=4 / stats- write=0 / stats-read=0 / ipratio=1.40 / pbratio=1.30 / aq-mode=3 / aq-strength=1.00 / cutree / zone-count=0 / no-strict-cbr / qg-size=32 / no-rc-grain / qpmax=69 / qpmin=0 / no-const-vbv / sar=0 / overscan=0 / formato de video=5 / rango=0 / colorprim=2 / transferencia=2 / colormatrix=2 / chromaloc=0 / display-window=0 / max-cll=0,0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no-opt-ref-list-length-pps / no-multi- pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery- sei / análisis-reutilización-nivel=5 / factor de escala=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass- dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Predeterminado0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no- opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr- opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no- limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Predeterminado0 / min-luma=0 / max-luma=1023 / log2-max-poc-lsb=8 / vui-timing-info / vui-hrd-info / slices=1 / no-opt-qp-pps / no- opt-ref-list-length-pps / no-multi-pass-opt-rps / scenecut-bias=0.05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr- opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no- limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Predeterminado05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Predeterminado05 / no-opt-cu-delta-qp / no-aq-motion / no-hdr / no-hdr-opt / no-dhdr10-opt / no-idr-recovery-sei / analysis-reuse-level=5 / scale-factor=0 / refine-intra=0 / refine-inter=0 / refine-mv=0 / no-limit-sao / ctu-info=0 / no-lowpass-dct / refine-mv-type=0 / copy-pic=1 / max-ausize-factor=1.0 / no-dynamic-refine / no-single-sei Predeterminado
: Sí Obligado : No

Traté de encontrar una solución en el libro: Estándares de codificación de video y formatos de video de Rao, sin embargo, no pude encontrar una buena pista.

Respuestas (1)

parece que el video está codificado en 4000 kbit/s, en lugar de un factor de velocidad (RF).
Pero ese no es el problema aquí. El problema es: si bien 264 admite la codificación sin pérdidas, ¡no es ampliamente compatible! (Haría esto configurando el formato de color en hi444 y -cq 0(Gracias a Gyan por señalar esto)

Si desea la mejor calidad, pero también el archivo más grande, desea RF = 1.
Si desea muy buena calidad, pero aún así archivos grandes, desea RF <= 16
buena calidad con archivos grandes. 16 < RF <=24
La calidad mediocre con un tamaño de archivo medio 24 < RF <= 28
de hasta 51 empeora y se hace más pequeña.

También puede considerar usar ffmpeg para transcodificar archivos de video que no desea editar, ya que la mayoría de los editores de video también pierden calidad en el proceso de volver a procesar las entradas para el codificador.

cosas ffmpeg

Enlace: https://ffmpeg.zeranoe.com/builds/
Documentación completa: https://ffmpeg.org/documentation.html
Si desea buena calidad, pero tiempos de codificación prolongados, use esto en un CMD que pueda ver ffmpeg.exe :

ffmpeg -i my_input_file.mkv -map 0:v? -map 0:a? -map 0:s? -c:v libx264 -preset:v medium -profile:v high -rc-lookahead 900 -crf 16 -c:a copy -c:s copy my_output_file.mkv

Los parámetros significan lo siguiente:
-i <file>el archivo a transcodificar
-map 0:v?usa todos los flujos de video desde la entrada 0. El signo de interrogación significa "si existen"
-map 0:a?usa todos los flujos de audio
-map 0:a?usa todos los flujos de subtítulos
-c:v libx264convierte el video usando el libx264codificador.
-preset:v mediumutilice velocidad media. Las alternativas son ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo(cuanto más rápido, más grande es el archivo, el perfil más lento tiene resultados decrecientes. placebotoma un múltiplo del tiempo de veryslow, pero da como resultado menos del 0,1 % de tamaño más pequeño
-profile:v highuse codificación de alta calidad. ( otras opciones solo están ahí para la compatibilidad con versiones anteriores)
-rc-lookahead 900busque hasta 900 fotogramas más adelante para encontrar la mejor codificación del fotograma actual. Más da como resultado una calidad ligeramente mejor (como el placebo) por tamaño, más pequeño lo contrario. Se aplica el mismo principio que en -preset.
-crf 16el factor de tasa Cuanto mayor sea el número, menor será el tamaño y más fea la imagen. Aproximadamente cada 6 puntos la mitad del tamaño del archivo. La mayoría de los humanos no notarán la diferencia con -crf 20. Muchos ni siquiera con -crf 24
-c:a copydejar el audio como está.
-c:s copyDeja los subtítulos como están.

Si tiene una GPU nVidia, es posible que desee utilizar la unidad de codificación integrada. Utilice este comando en su lugar:

ffmpeg -i my_input_file.mkv -map 0:v? -map 0:a? -map 0:s? -c:v h264_nvenc -preset:v medium -profile:v high -rc constqp -qp 16 -c:a copy -c:s copy my_output_file.mkv

Parámetros similares. presetse limita a fast, medium, slow, donde slowrequeriría una configuración adicional más allá de esta respuesta.
El cambio principal es que el codificador nvidia no admite la búsqueda anticipada y, por eso, no es la crfopción. Por eso usamos la cqopción (Constant Quantization). La diferencia entre estos dos es que crfintenta oscilar alrededor del valor definido, en función de las imágenes actuales y siguientes, mientras cqpermanece en ese valor exacto durante todo el tiempo.

Puede intentar usar tasas de bits constantes, pero no se recomienda, porque la calidad de su video estará por todos lados, porque la mayoría de los cuadros no tienen la misma dificultad que sus predecesores.

Espero que esto ayude

Saludos

264 no admite la codificación sin pérdidas --> tanto el estándar H.264 como el codificador x264 admiten la codificación sin pérdidas como parte del perfil Hi444p, pero no es ampliamente compatible.
Tienes razón OO Arreglando esto en la respuesta
Solo si alguien tiene el mismo problema como yo que un dispositivo de proyección inteligente no lee 10 bits (solo 8 bits): agregue -vf format=yuv420a la solución de @PingerShikkoken para convertir de H.265 de 10 bits a H.264 de 8 bits