Así que tengo un video sin formato en formato yuv420p input.yuv
, y sé su tamaño de cuadro. Ejecuto 2 comandos:
ffmpeg -pix_fmt yuv420p -s 352x288 -i input.yuv -pix_fmt yuv422p input_yuv422p.yuv
y entonces
ffmpeg -pix_fmt yuv422p -s 352x288 -i input_yuv422p.yuv -pix_fmt yuv420p input_decoded.yuv
El problema es que los archivos input.yuv
y input_decoded.yuv
difieren. Según tengo entendido, cuando convertimos a yuv422p
desde yuv420p
- esencialmente debemos copiar los componentes existentes U
y V
para producir más muestras para completar; luego, al volver a convertir, simplemente deberíamos dejar caer estas muestras y recibir el archivo original, pero eso no es lo que veo. ¿Estoy haciendo algo mal aquí, y es posible recibir la yuv420p
devolución original ?
420p
a 422p
y la caída de bytes al convertir la espalda - no debe haber ninguna fuente de posibles errores de redondeo. Tal vez mi suposición acerca de la forma en la conversión 420p
a 422p
que se realiza está mal, y ffmpeg
hace algún tipo de interpolación de hecho. Verificará las diferencias ahora, gracias.
PSNR y:inf u:51.837944 v:51.936866
así que solo el croma difiere. ¿Es posible de alguna manera dar instrucciones ffmpeg
para usar los bytes simples de copiar / soltar al convertir entre yuv420p
y yuv422p
hacia adelante / hacia atrás?