Captura sin pérdidas con FFmpeg

He estado intentando hacer una captura de juegos sin pérdidas mientras trabajaba en un programa para hacer análisis de velocidad de fotogramas. No he tenido mucha suerte al encontrar un programa que realice capturas sin pérdidas, ya que AmaRecTV, Dxtory y Virtualdub parecen estar abandonados. Estoy tratando de usar FFmpeg y se me ocurrió el siguiente comando:

ffmpeg -y -f dshow -rtbufsize 500M -i video="Game Capture 4K60 Pro Video 01" -framerate 60 -vsync 0 -c:v libx264 -preset ultrafast -crf 0 -pix_fmt yuv420p "e:\Captures\out.mkv"

Desafortunadamente, el tamaño del archivo no parece lo suficientemente grande como para no tener pérdidas. Por ejemplo, según MediaInfo, obtuve una tasa de bits general de 132 Mb/s (16,5 MB/s) para una captura de 720p a 60 fps. Sin embargo, estoy bastante seguro de que un archivo sin pérdida de 720p, 60 fps, 4:2:0 debería estar más cerca de 640 Mb/s (80 MB/s).

Estoy usando Windows 10 1809 x64, una compilación nocturna de FFmpeg x64 que es más reciente que 4.0.2, Nvidia 399.24 y un Elgato 4K60 Pro.

¿Este comando produce una captura sin pérdidas? ¿Y cómo puedo mejorarlo?

Respuestas (2)

libx264 es un codificador muy eficiente, por lo que la tasa de bits no es inusual. De hecho, está en el lado superior, pero dado que está capturando un juego, espero que haya un movimiento constante involucrado, y su preajuste es ultrarrápido, lo que desactiva parte de la compresión agresiva.

Cuando dices 80MB/s, creo que estás pensando en trama completa sin comprimir, es decir, 1280 x 720 x 12 bits/píxel x 60 fps. Sin pérdidas no significa sin comprimir, al igual que puede haber un ZIP comprimido de un programa binario.


Por cierto, -framerate 60va antes -i video="Game Capture 4K60 Pro Video 01", ya que es una opción de entrada.

Si bien el códec x264 es bastante eficiente, si quiere asegurarse de que x264 no haga tanta compresión mientras hay mucho movimiento, puede usar el parámetro de cuantificación -qp 0. Hay mucha información en los siguientes enlaces:

Una parte clave del artículo es esta:

Si solo tuviera a mano formas simples de comparar la calidad de las secuencias de video (por ejemplo, en función de una medición por cuadro de la relación señal / ruido, PSNR), puede mirar una codificación CRF y decir que era de menor calidad que el CQP variante. Pero si eres un ser humano, subjetivamente, la copia CRF se verá igual o mejor que la versión CQP.

Sin embargo, un usuario en el enlace de stackoverflow anterior parece pensar que -qp 0era mejor para las grabaciones de pantalla de su juego. Esto podría encajar mejor si está realizando un análisis de velocidad de fotogramas (es decir, la compresión puede ser imperceptible para usted, pero no para su analizador de velocidad de fotogramas).

Esto dará como resultado archivos de mayor tamaño que espera.