La mejor configuración para FFMpeg con NVENC

26

Estoy usando mi FFMPEG con el soporte de mi GPU ( NVENC ) para convertir archivos de mi receptor satelital (SD, mpeg2 .TS-Files) en archivos h264 .mp4

Aquí está la línea que estoy usando

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

Pero la calidad no es tan buena como se esperaba. Y no se usa toda la potencia de mi sistema:

ingrese la descripción de la imagen aquí

Solo 11% de GPU y 30% de uso de CPU.

Pregunta: ¿Hay algunas mejoras que puedo hacer para mejorar la calidad con un tamaño de archivo igual y usar más potencia de cálculo de mi Geforce GTX 1080?

Encontré algunos parámetros de 林正浩 para cambiar, pero -preset slowya debería ser el mejor enfoque de calidad, ¿verdad?

Dr. caracol
fuente

Respuestas:

37

Aquí hay una guía aproximada para ajustar el codificador:

Comenzaremos por lo básico, ya que sería perjudicial llegar a la conclusión de que un aluvión rápido de opciones mejorará repentinamente la producción esperada sin comprender los objetivos y expectativas deseados:

1. Comience por comprender las opciones del codificador.

Para los codificadores basados ​​en NVENC, comience por aprender las opciones que toma cada codificador (tenga en cuenta que estoy en Linux, por eso estoy usando xclip para copiar las opciones de códec en el portapapeles antes de pegarlas aquí):

(un). Para el codificador H.264:

ffmpeg -hide_banner -h encoder=h264_nvenc | xclip -sel clip

Salida:

Encoder h264_nvenc [NVIDIA NVENC H.264 encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
h264_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... 
     losslesshp                   E..V.... 
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 3) (default main)
     baseline                     E..V.... 
     main                         E..V.... 
     high                         E..V.... 
     high444p                     E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 51) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     1b                           E..V.... 
     1.0b                         E..V.... 
     1.1                          E..V.... 
     1.2                          E..V.... 
     1.3                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     2.2                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     3.2                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     4.2                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -b_adapt           <boolean>    E..V.... When lookahead is enabled, set this to 0 to disable adaptive B-frame decision (default true)
  -spatial-aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal-aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)
  -coder             <int>        E..V.... Coder type (from -1 to 2) (default default)
     default                      E..V.... 
     auto                         E..V.... 
     cabac                        E..V.... 
     cavlc                        E..V.... 
     ac                           E..V.... 
     vlc                          E..V.... 

(si). Para el codificador HEVC / H.265:

ffmpeg -hide_banner -h encoder=hevc_nvenc | xclip -sel clip

Salida:

Encoder hevc_nvenc [NVIDIA NVENC hevc encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: yuv420p nv12 p010le yuv444p yuv444p16le bgr0 rgb0 cuda
hevc_nvenc AVOptions:
  -preset            <int>        E..V.... Set the encoding preset (from 0 to 11) (default medium)
     default                      E..V.... 
     slow                         E..V.... hq 2 passes
     medium                       E..V.... hq 1 pass
     fast                         E..V.... hp 1 pass
     hp                           E..V.... 
     hq                           E..V.... 
     bd                           E..V.... 
     ll                           E..V.... low latency
     llhq                         E..V.... low latency hq
     llhp                         E..V.... low latency hp
     lossless                     E..V.... lossless
     losslesshp                   E..V.... lossless hp
  -profile           <int>        E..V.... Set the encoding profile (from 0 to 4) (default main)
     main                         E..V.... 
     main10                       E..V.... 
     rext                         E..V.... 
  -level             <int>        E..V.... Set the encoding level restriction (from 0 to 186) (default auto)
     auto                         E..V.... 
     1                            E..V.... 
     1.0                          E..V.... 
     2                            E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     3                            E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     4                            E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     5                            E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6                            E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -tier              <int>        E..V.... Set the encoding tier (from 0 to 1) (default main)
     main                         E..V.... 
     high                         E..V.... 
  -rc                <int>        E..V.... Override the preset rate-control (from -1 to INT_MAX) (default -1)
     constqp                      E..V.... Constant QP mode
     vbr                          E..V.... Variable bitrate mode
     cbr                          E..V.... Constant bitrate mode
     vbr_minqp                    E..V.... Variable bitrate mode with MinQP (deprecated)
     ll_2pass_quality              E..V.... Multi-pass optimized for image quality (deprecated)
     ll_2pass_size                E..V.... Multi-pass optimized for constant frame size (deprecated)
     vbr_2pass                    E..V.... Multi-pass variable bitrate mode (deprecated)
     cbr_ld_hq                    E..V.... Constant bitrate low delay high quality mode
     cbr_hq                       E..V.... Constant bitrate high quality mode
     vbr_hq                       E..V.... Variable bitrate high quality mode
  -rc-lookahead      <int>        E..V.... Number of frames to look ahead for rate-control (from 0 to INT_MAX) (default 0)
  -surfaces          <int>        E..V.... Number of concurrent surfaces (from 0 to 64) (default 0)
  -cbr               <boolean>    E..V.... Use cbr encoding mode (default false)
  -2pass             <boolean>    E..V.... Use 2pass encoding mode (default auto)
  -gpu               <int>        E..V.... Selects which NVENC capable GPU to use. First GPU is 0, second is 1, and so on. (from -2 to INT_MAX) (default any)
     any                          E..V.... Pick the first device available
     list                         E..V.... List the available devices
  -delay             <int>        E..V.... Delay frame output by the given amount of frames (from 0 to INT_MAX) (default INT_MAX)
  -no-scenecut       <boolean>    E..V.... When lookahead is enabled, set this to 1 to disable adaptive I-frame insertion at scene cuts (default false)
  -forced-idr        <boolean>    E..V.... If forcing keyframes, force them as IDR frames. (default false)
  -spatial_aq        <boolean>    E..V.... set to 1 to enable Spatial AQ (default false)
  -temporal_aq       <boolean>    E..V.... set to 1 to enable Temporal AQ (default false)
  -zerolatency       <boolean>    E..V.... Set 1 to indicate zero latency operation (no reordering delay) (default false)
  -nonref_p          <boolean>    E..V.... Set this to 1 to enable automatic insertion of non-reference P-frames (default false)
  -strict_gop        <boolean>    E..V.... Set 1 to minimize GOP-to-GOP rate fluctuations (default false)
  -aq-strength       <int>        E..V.... When Spatial AQ is enabled, this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive) (from 1 to 15) (default 8)
  -cq                <float>      E..V.... Set target quality level (0 to 51, 0 means automatic) for constant quality mode in VBR rate control (from 0 to 51) (default 0)
  -aud               <boolean>    E..V.... Use access unit delimiters (default false)
  -bluray-compat     <boolean>    E..V.... Bluray compatibility workarounds (default false)
  -init_qpP          <int>        E..V.... Initial QP value for P frame (from -1 to 51) (default -1)
  -init_qpB          <int>        E..V.... Initial QP value for B frame (from -1 to 51) (default -1)
  -init_qpI          <int>        E..V.... Initial QP value for I frame (from -1 to 51) (default -1)
  -qp                <int>        E..V.... Constant quantization parameter rate control method (from -1 to 51) (default -1)
  -weighted_pred     <int>        E..V.... Set 1 to enable weighted prediction (from 0 to 1) (default 0)

2. Comprenda las limitaciones del hardware y cumpla con los valores predeterminados antes de aplicar las opciones:

Consulte esta respuesta para conocer las limitaciones de hardware con las que se encontrará con NVENC, especialmente para codificaciones HEVC en Pascal.

Para ver la infraestructura acelerada por hardware disponible para el hardware NVIDIA de generación actual con FFmpeg, consulte esta respuesta.

Luego, utilizando esa información, continúe con el siguiente paso.

3. La sintaxis es crítica:

Aquí está el orden en que debe pasar los argumentos a FFmpeg:

(un). Llama el binario.

(si). Pase cualquier argumento a FFmpeg (como -logleveldirectamente) antes de declarar entradas.

(C). Si está utilizando una decodificación acelerada por hardware, como cuviddeclararla aquí e incluir cualquier argumento específico que requiera. En este punto, sería imperativo mencionar que los decodificadores tienen restricciones específicas, como resoluciones de entrada esperadas, códecs compatibles, etc., y como tal, se recomienda que en producción, determine y valide la necesidad de decodificadores acelerados por hardware como falla en esta etapa da como resultado una codificación fallida y es irrecuperable. De hecho, los desarrolladores de MPV han mencionado esto repetidamente , no confíe en la decodificación acelerada por hardware para la entrega de contenido de misión crítica.

(re). Declara tus aportes. Para las transmisiones, use la URL y, si es necesario, agregue banderas adicionales (como tamaños de búfer) según sea necesario. Para los recursos locales (en un sistema de archivos accesible), se necesita la ruta absoluta del archivo.

(mi). Opcionalmente, inserte un filtro. Esto es necesario para funciones como cambiar el tamaño, conversaciones en formato de píxeles, desentrelazado, etc. Tenga en cuenta que, dependiendo del filtro que se use aquí, un decodificador basado en hardware (como se describe en la sección (c) introducirá restricciones de que su filtro debe ser capaz de manejar, o de lo contrario su codificación fallará.

(F). Llamar a los codificadores de vídeo y audio apropiados, y pasar argumentos necesarios para ellos, tales como asignaciones, tasas de bits, ajustes preestablecidos del codificador, etc. Cuando se trata de tasas de bits, asegúrese de que los valores deseados se establecen a través de los -b:v, -maxrate:vy -bufsize:vopciones. No los deje en blanco. Este es un buen punto de partida sobre por qué son importantes estos valores. Como siempre, comience especificando un preset. Desplácese hacia abajo para ver notas sobre el impacto en el rendimiento de los preajustes con este codificador en particular.

(sol). Mientras que FFmpeg puede deducir el formato de salida requerido de un archivo dependiendo de la extensión seleccionada del archivo de salida, se recomienda declarar explícitamente el formato de salida (a través de la opción -f) para que se puedan pasar opciones adicionales al muxer subyacente si es necesario , como suele ser el caso con los formatos de transmisión como HLS, MPEGS y DASH.

(h) La ruta absoluta al archivo de salida.

Con su ejemplo anterior, citado como:

ffmpeg -i "e:\input.ts" -vcodec h264_nvenc -preset slow -level 4.1
       -qmin 10 -qmax 52 "e:\output.mp4"

Puede aumentar la calidad de salida especificando las velocidades de bits adecuadas (a través de -b:v, -maxrate:vy la -bufsize:vconfiguración), habilitando técnicas de codificación de cuantificación adaptativa (se admiten métodos AQ espaciales y temporales, de los cuales solo se puede usar uno a la vez) y de forma opcional (y por separado) habilitando la predicción ponderada (que deshabilitará el soporte de trama B) como se muestra a continuación, así como un filtro opcional para una reducción de escala adecuada y cambiar el tamaño si es necesario. El siguiente ejemplo muestra una entrada de mpegts de manejo de fragmentos codificada en mpeg2:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v mpeg2_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 \
-spatial_aq:v 1 -aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

Advertencia: Tenga en cuenta que la predicción ponderada ( -weighted_pred) no se puede habilitar al mismo tiempo que la cuantificación adaptativa. Intentar hacerlo resultará en una falla de inicialización del codificador.

El fragmento anterior supone que el archivo de entrada es una secuencia MPEG2. Si ese no es el caso, cambie al decodificador CUVID correcto después de analizarlo:

ffprobe -i e:\input.ts

Si es 'H.264 / AVC, modifique el fragmento como se muestra a continuación:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -spatial_aq:v 1 \
-aq-strength:v 15 -coder:v cabac \
-f mp4 "e:\output.mp4"

He notado que habilitar las opciones de cuantificación adaptativa O de predicción ponderada para NVENC puede presentar problemas con la estabilidad, particularmente con combinaciones específicas de controladores de dispositivos. Siempre que sea posible, considere usar cuadros B (no más de 3) combinados con la opción genérica -refs:vestablecida en 16 o más, en lugar de alternar en AQ y predicción ponderada:

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac \
-f mp4 "e:\output.mp4"

Con Turing , en particular, también puede beneficiarse de habilitar B-frames para referencia como se muestra a continuación (vea la palanca -b_ref_mode:v middle):

ffmpeg -loglevel debug -threads 4 -hwaccel cuvid -c:v h264_cuvid -i "e:\input.ts" \
-filter:v hwupload_cuda,scale_npp=w=1920:h=1080:interp_algo=lanczos \
-c:v h264_nvenc -b:v 4M -maxrate:v 5M -bufsize:v 8M -profile:v main \
-level:v 4.1 -rc:v vbr_hq -rc-lookahead:v 32 -refs:v 16 \
-bf:v 3 -coder:v cabac -b_ref_mode:v middle \
-f mp4 "e:\output.mp4"

Una nota adicional sobre el recuento de hilos (pasado a ffmpeg a través de la -threadsopción):

Más subprocesos de codificador más allá de un cierto umbral aumenta la latencia y tendrá una mayor huella de memoria de codificación. La degradación de la calidad es más prominente con conteos de subprocesos más altos en modos de velocidad de bits constante y modo de velocidad de bits casi constante llamado VBV (verificador de búfer de video), debido a un mayor retraso de codificación. Los fotogramas clave necesitan más datos que otros tipos de fotogramas para evitar pulsos de fotogramas clave de baja calidad.

El modo de retardo cero o de subprocesos divididos no tiene retraso, pero esta opción empeora aún más la calidad de subprocesos múltiples en los codificadores compatibles.

Por lo tanto, es aconsejable limitar el recuento de subprocesos en las codificaciones donde la latencia es importante, ya que el rendimiento percibido del codificador aumenta las ventajas que puede aportar a largo plazo.

Y dado que está en Windows, es posible que desee eliminar los escapes de shell \anteriores, ya que estoy escribiendo esto desde un cuadro de Unix que prueba el comando anterior.

Notas sobre el impacto en el rendimiento con preajustes y consideraciones de codificación entrelazadas:

Para obtener un alto rendimiento y un rendimiento de baja latencia, asegúrese de usar uno llhpo los llhqvalores predeterminados. Esto es más útil para las cargas de trabajo, como la transmisión en vivo, donde se espera una compatibilidad más amplia con una variedad más amplia de dispositivos, y como tal, se pueden omitir por completo las funciones paralizantes de rendimiento como los cuadros B para una buena compensación entre velocidades de bits más altas en uso y rendimiento. Los ajustes preestablecidos más altos (como el predeterminado medium) tienen rendimientos decrecientes rápidamente en la salida de calidad y al mismo tiempo incurren en desaceleraciones significativas en el rendimiento del codificador. La diferencia de calidad entre llhpy llhqsegún lo medido por VMAF de Netflix es prácticamente insignificante, sin embargo, el aumento del rendimiento del codificador (más de ~ 30% en mi banco de pruebas) con el primero es definitivamente apreciable.

Para los ajustes preestablecidos llhpy llhq, así como otros ajustes preestablecidos en uso, también puede anular los métodos de control de velocidad incorporados pasando los -rc:vargumentos expuestos por las opciones del codificador. Por ejemplo, con una codificación de velocidad de bits constante, puede especificar -rc:v cbr(que es significativamente más rápido que el cbr_ld_hqmétodo de control de velocidad, lo que brinda un aumento adicional de ~ 20% al rendimiento). Tenga en cuenta que el valor predeterminado seleccionado tiene el mayor impacto en el rendimiento , seguido de las opciones predeterminadas (como el método de control de velocidad en uso) que puede anular opcionalmente si lo desea.

Considere su flujo de trabajo de codificación y ajústelo según sea necesario. Su kilometraje definitivamente variará, según su contenido de origen, las cadenas de filtros en uso, las variables de configuración de la plataforma específica (como su GPU y versiones de controlador), etc.

Al mismo tiempo, tenga en cuenta que NVIDIA ha desactivado explícitamente la codificación entrelazada en Turing en todos los niveles, incluso en la línea 1660Ti que usa el codificador Volta NVENC más antiguo. Si necesita soporte de codificación entrelazada, cambie a SKU Pascal o anteriores en su lugar.

林正浩
fuente
1
¡Épico! Gracias, después de trabajar con la codificación de hardware durante tanto tiempo, ¿recomendaría esto sobre la codificación de la CPU o las desventajas de calidad / tamaño de archivo siguen siendo tan grandes? Quiero decir que se han realizado muchas mejoras en NVENC y NVENC HQ debería ser de la misma calidad en comparación con el x264 predeterminado
Dr. Snail
@ Dr.Snail Recomiendo juzgar primero los requisitos de su flujo de trabajo y tener en cuenta todos los factores antes de cambiar a una solución de codificación basada en hardware. Por un lado, NVENC, al igual que otras soluciones de codificación basadas en SIP, siempre producirá un rendimiento drásticamente más rápido con una mayor eficiencia energética en comparación con una implementación basada en software, todos los demás factores constantes. Para esto, aplique una velocidad a la compensación de calidad como se esperaba, luego evalúe las características no compatibles. Por ejemplo, con NVENC, no podemos insertar información HDR directamente y tenemos que usar una herramienta externa para eso.
林正浩
Herramientas como esta: github.com/SK-Hardwired/nv_hevc_hdr_patcher .
林正浩
Usted elige scale_npp=w=1920:h=1080porque los filtros son una de las cosas que más se benefician de la GPU, ¿verdad? Otra cosa, limitar la tasa de bits -b:v 1000k -minrate 500k -maxrate 3000kparece hacer que el tamaño de salida sea más predecible
Dr. Snail,
Sí, @ Dr.Snail. Los tamaños de archivo predecibles son una prioridad.
林正浩
3

Mi experiencia con el uso de nvenc es que necesita decirle qué tasa de bits desea: el valor predeterminado es VBR, que está bien, pero ninguna cantidad de ajuste compensa el hecho de que siempre quiere darle una tasa de bits promedio de 2M sin importar qué archivo de resolución lo alimentas. Parece una falla en el codificador; funciona de manera predecible en cualquier otro aspecto, pero necesita (por ejemplo) -b:v 4Mun archivo de 720p o -b:v 8M1080p. Probablemente podría reducirlos un poco si lo desea también.

serilain
fuente
1

Libvorbis para audio parece lento. ac3 debería darte un aumento de velocidad del 15% +.

Dicho esto, algo está mal con su controlador de video o está utilizando una copia antigua de ffmpeg. q No tengo su clip, pero tomé un archivo SD ts de mi PVR y usé su configuración.

Obtuve 700 fps (configuración tuya) en una GTX750 (no TI) (la más barata)

Tengo 925fps (tu configuración con audio ac3)

La otra recomendación que puedo hacer es:

Cambia tu qmax a aproximadamente 23.

Don giovanni
fuente
He probado esto con un viejo GTX 760 que encontré con 400FPS con este comando, ¿ ffmpeg40\bin\ffmpeg -hwaccel cuvid -c:v mpeg2_cuvid -i "E:\input.ts" -c:v h264_nvenc "E:\output.mp4"podría agregar su código con el AC3 i.stack.imgur.com/CNaWM.png
Dr. Snail
Esto debería funcionar en su línea de comando. Agréguelo al lado de su -c: v h264_nvenc -c: a ac3 También debería poder empujar 2 sesiones. Abra una segunda línea de comando y codifique otros .ts al mismo tiempo. Si lo desea, me encantaría probar uno de sus archivos .ts para ver si hay algo más que pueda hacer para aumentar su velocidad y calidad.
Don Giovanni