Tengo secuencias de juego grabadas con ShadowPlay ("GeForce Experience") a 60 FPS, lo que, según tengo entendido, da como resultado una velocidad de fotogramas variable, porque el juego pierde fotogramas a veces. Sin embargo, tratar de usar este video en Adobe Premiere hace que el audio del juego quede muy por detrás de las imágenes, porque Premiere lo trata como si cada cuadro tuviera la misma longitud.
He probado HandBrake con esta configuración:
Calidad: constante, RF 0 (sin pérdidas)
FPS: 60, constante
Detelecine: Desactivado
Descombinado: Desactivado Eliminación de
ruido: Desactivado
Desbloqueo: Desactivado
Pero el video de salida no solo es mucho más pequeño que el video de origen, sino que es enormemente peor en términos de calidad visual. ¿Por qué no es sin pérdidas cuando lo configuré en lo que dice que es sin pérdidas?
Información de video de entrada: http://pastebin.com/7Tss4brj
Información de video de salida: http://pastebin.com/DKFEzDKk (de Mediainfo)
¿Cómo puedo convertir un video de velocidad de fotogramas variable a un video de velocidad de fotogramas constante sin pérdidas?
Para empezar: tu versión de Handbrake es antigua. La versión 1.0.3 salió hace muy poco, tiene algunas mejoras con respecto a la versión anterior.
En segundo lugar, CQ0 en realidad no es "sin pérdidas". Su objetivo es la calidad "sin pérdidas", pero chocará con las limitaciones de velocidad de datos del nivel H.264 , por lo que, si bien podría necesitar, digamos, 100 MbPS en un punto determinado para lograr una compresión "sin pérdidas", el nivel 4.0 podría ser limitándolo a 20MbPS o algo así. Tenga en cuenta que en la lectura de Configuración de codificación en su archivo de exportación se enumera "vbv_maxrate=20000", ahí es donde se limita su tasa de bits. Entonces, para acercarse lo más posible a la pérdida sin pérdidas, necesitaría algo como el Nivel 5.2.
Por lo tanto, aumentar su nivel de H.264 mejorará la calidad, pero Premiere puede terminar esforzándose mucho. H.264 es realmente malo para la edición. Es muy complejo desde el punto de vista computacional, en gran parte porque no almacena cada fotograma por separado (llamado compresión intrafotograma), sino que toma lotes de fotogramas (llamados Grupo de imágenes o GOP) y los comprime juntos, de tal manera que cualquier fotograma dentro un GOP dependerá de los marcos circundantes para reproducir una imagen completa. Esto se denomina compresión Interframe, y la cantidad de fotogramas en un GOP depende de los parámetros establecidos en el momento de la codificación, e incluso puede ser variable (no es típico), pero puede ver cuáles son esos parámetros en MediaInfo al observar la línea que dice "Formatear". ajustes, GOP" ("N=30" significa 30 fotogramas por GOP), o mirando la configuración de codificación donde anota "keyint" (Intervalo de fotogramas clave). Entonces, necesitar decodificar los 30 cuadros para mostrarle cualquier cuadro esmuy intensivo en CPU y RAM.
Si tiene el almacenamiento, le recomiendo que considere usar DNxHD, que es un códec "mezzanine" (fácil de editar) que conserva la calidad, considerado "prácticamente sin pérdidas", pero tiene un bajo impacto en la CPU/RAM. La trampa son las tasas de bits muy altas. Así que estamos hablando de ~130-200GB/hr a 1080p59.94. El otro problema es que DNxHD tiene resoluciones y frecuencias de cuadro muy limitadas . También está CineForm, que tiene una calidad igual de alta, pero mucho más flexible, y tanto CineForm como DNxHD son compatibles de forma nativa con Premiere (CineForm en 2015 y posteriores), pero la última vez que verifiqué la compatibilidad con CineForm en otras herramientas, como ffmpeg, falta.
Entonces, una solución más fácil de editar sería usar ffmpeg para hacer DNxHD con una línea de comando de la siguiente manera:
ffmpeg -i (input file).mp4 -c:v dnxhd -b:v 290M -c:a pcm_s16le -r 60 (output).mxf
Eso haría DNxHD con audio sin comprimir en un archivo MXF Op1a. También puede golpear .mov al final y crear un archivo Quicktime con la misma facilidad. Tenga en cuenta que -r establece la velocidad de fotogramas de salida. Podría intentar usar H.264 en ffmpeg cambiando el códec de video (-c:v), pero se encontrará con las mismas limitaciones que tendría al trabajar con Handbrake, así que no sé si realmente vale la pena hacerlo. en eso aquí.
Grabo mi contenido de Shadowplay con la siguiente configuración:
Por lo tanto, no es compatible con el mencionado DNxHD. Los canales de audio también tienen velocidades de fotogramas variables y deben sincronizarse.
Lo siguiente volverá a codificar el video y el audio en 60 FPS CFR y no tendrá problemas de sincronización de audio en Adobe Premier. Lo guarda en un archivo por lotes (.bat) y luego lo ejecuta a través de la línea de comando con el archivo de video como primer argumento.
@echo off
set inputFile=%1
set outputFile=%inputFile:.mp4=_cbr.mp4%
ffmpeg ^
-i %inputFile% ^
-vsync 1 -async 1 ^
-map 0:v:0 ^
-c:v libx264 ^
-preset veryfast ^
-x264-params "nal-hrd=cbr" ^
-b:v 50M ^
-framerate 60 ^
-map 0:a:0 ^
-c:a:0 aac ^
-b:a 384k ^
-map 0:a:1 ^
-c:a:1 aac ^
-b:a 384k ^
%outputFile%
Al comparar cuadros individuales, no noté una diferencia en la calidad entre este y la grabación original. Puede cambiar algunas de las opciones, como la velocidad de fotogramas para que coincida con su contenido, o aumentar la velocidad de bits si cree que hay alguna pérdida.
gian
Zdeněk Gromnica
gian
Zdeněk Gromnica
Zdeněk Gromnica
Zdeněk Gromnica
gian
ffmpeg -i in.mp4 -r 60 -crf 0 -profile:v main -c:a copy out.mp4
Zdeněk Gromnica
gian
-pix_fmt yuv420p
Zdeněk Gromnica