Cómo utilizar la aceleración de hardware con FFMPEG para fines de recorte y concatenación

Estoy ejecutando FFMPEG en una computadora portátil con Windows 10 (64 bits) con procesador Intel i3 (6.ª generación) y GPU AMD R5 M430.

Grabé muchos videos en un viaje reciente. Acumulativamente, tienen más de 100 horas de duración. Cada video ocupa un mínimo de 2-3 GB y tiene una duración mínima de 1 hora.

Necesito recortar 2-4 videos y luego concatenarlos en un solo archivo. Esta operación debe realizarse para todos estos videos.

En este momento, estoy recortando videos individuales usando el siguiente comando:

ffmpeg.exe -i "INPUT_VIDEO" -ss START_TIME -to END_TIME -c copy "OUTPUT_VIDEO"

Y luego concateno los videos usando este comando:

ffmpeg.exe -f concat -safe 0 -i VideosToBeConcatenated.txt -c copy "CONCATENATED_OUTPUT_VIDEO"

donde VideosToBeConcatenated.txtcontiene los nombres de archivo de los videos que se concatenarán.

Ejecutar estos comandos en una sola ventana de comandos me da una velocidad de 20-25x. Ejecutarlos en dos ventanas de comando simultáneamente reduce la velocidad a 10-12x, al mismo tiempo que hace que mi sistema se retrase/congele.

¿Hay alguna manera de que pueda usar mi GPU para acelerar estas operaciones? Digamos, ¿usando Quicksync del i3 o AMF/VCE del R5?

Intenté usar -hwaccel dxva2los comandos mencionados anteriormente de la siguiente manera:

ffmpeg.exe -hwaccel dxva2 -i "INPUT_VIDEO" -ss START_TIME -to END_TIME -c copy "OUTPUT_VIDEO"

y

ffmpeg.exe -hwaccel dxva2 -f concat -safe 0 -i VideosToBeConcatenated.txt -c copy "CONCATENATED_OUTPUT_VIDEO"

Sin embargo, no noto ningún aumento en la velocidad.

También configuré ffmpeg.exey cmd.exeen "Alto rendimiento" en la configuración de gráficos intercambiables de AMD. Pero el monitor de gráficos intercambiables incorporado sugiere que ninguno de los procesos está utilizando la dGPU.

¿Hay alguna manera de que pueda usar mis GPU (Quicksync de i3 o AMF/VCE de R5) para acelerar estas operaciones sin comprometer la calidad de los videos de salida ?

[Editar:] Estoy tratando de entender la documentación de Quicksync de FFMPEG , pero es demasiado madura para un aficionado como yo.

Respuestas (1)

Dado que está utilizando -c copyen sus comandos, no hay decodificación, filtrado o codificación, por lo que la aceleración de hardware no es relevante en absoluto. El cuello de botella principal es la E/S de disco. En un disco duro interno normal (con una CPU de tercera generación), obtengo velocidades de 400x, por lo que sospecho que está leyendo o escribiendo en una unidad externa. O su disco interno podría ser lento, tener un caché más pequeño. El mayor impulso provendrá de escribir en una unidad diferente a la unidad en la que residen las entradas, siendo ideal que ambas unidades sean internas.