¿Cómo deducir y superponer una velocidad de cuadros variable de video con cuadros duplicados usando ffmpeg?

¿Cómo deducir y superponer una velocidad de cuadros variable de video con cuadros duplicados usando ffmpeg?

Tengo una grabación de video sin pérdidas de un juego sin que se rompa la pantalla. El vídeo en sí está a 60 fps constantes, pero la velocidad de fotogramas del juego varía entre 20 y 30 fps debido a problemas de rendimiento que estamos depurando. Podemos superponer un contador de FPS dentro del juego, pero esto afecta el rendimiento y da una imagen inexacta de cuál es la verdadera velocidad de fotogramas alcanzable. ¿Hay alguna forma de utilizar ffmpeg para deducir la velocidad de fotogramas de los fotogramas duplicados en el archivo de vídeo y producir un nuevo archivo de vídeo con la velocidad de fotogramas deducida o los tiempos de fotogramas superpuestos?

A partir de algunas investigaciones, descubrí que ffmpeg -i lossless.mkv -vf "mpdecimate=hi=0:lo=0:frac=0" -loglevel debug -f null -imprimirá una lista de todos los fotogramas duplicados correctamente, pero esto no es muy útil y puede requerir secuencias de comandos complicadas para convertirlo en el resultado deseado. Si hay una manera de convertir primero el video en una velocidad de cuadros variable combinando los cuadros duplicados y luego superponer esta velocidad de cuadros sobre el video, sería más ideal.

En mis pruebas probé esta combinación de comandos:

  • ffmpeg -i lossless.mkv -vf "mpdecimate=hi=0:lo=0:frac=0" -vsync vfr -r 60 -c:v libx264 -preset medium -crf 0 -c:a copy lossless-vfr.mkv
  • ffmpeg -i lossless-vfr.mkv -vsync vfr -r 60 -vf "drawtext=fontfile='C\:\\Windows\\Fonts\\arial.ttf':x=10:y=10:fontsize=20:fontcolor=white:text='frametime\=%{expr\:pkt_duration}'" -c:v libx264 -preset medium -crf 0 -c:a copy lossless-fps.mkv

Sin embargo, el tiempo de fotograma mostrado siempre muestra el mismo valor en la superposición de 0,016000 a pesar de la velocidad de fotogramas variable. Si ejecuto, ffprobe -show_frames lossless-vfr.mkvveo que el pkt_duration_timevalor varía de un cuadro a otro, por lo que es extraño que obtenga un valor constante al dibujar la superposición de texto. ¿Cómo puedo obtener una superposición precisa de la velocidad de fotogramas variable?

información relacionada