Fallo de decodificación de hardware debido a parámetro no válido

Intentando que esto funcione. Tengo una tarjeta Quadro P1000, todas las verificaciones de cuda pasan, pero en la ejecución falla y se cambia a software. Adjunto el archivo de registro, aquí está el error que encuentro:

[mpeg2video @ 0000026adf73eb00] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed → CUDA_ERROR_INVALID_VALUE: invalid argument

Gracias de antemano.Frontline_WHRODT_2019_05_14_21_59_00.wtv-Frontline-2019-05-15T07-06-32.9029270-04-00.log.zip (106.0 KB)

En realidad, el error que devuelven los controladores gráficos está relacionado con la decodificación y no con la codificación. Aún está utilizando el codificador de hardware:

2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → Stream #0:0: Video: hevc (hevc_nvenc) (Main) (hev1 / 0x31766568), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1–1, 2000 kb/s, 29.97 fps, 30k tbn, 29.97 tbc
2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → Metadata:
2019-05-15T07:11:59 MCEBuddy.AppWrapper.FFmpeg → encoder : Lavc58.42.100 hevc_nvenc

La solicitud de decodificador de hardware de ffmpeg está siendo rechazada por la tarjeta gráfica, por lo que falla. Podría haber varias razones, quizás no identificó correctamente la secuencia de video para usar el códec adecuado o quizás no admite la decodificación de video mpeg2 para esa configuración de secuencia específica.

Es posible que no veas una gran mejora en el rendimiento, ya que tu video original es mpeg2 y la decodificación de mpeg2 es bastante eficiente en software; podría simplemente tomar más tiempo copiar todos los datos de video a la memoria gráfica, decodificarlo y devolverlo a ffmpeg, y luego devolverlo a la tarjeta de video para su codificación. Por lo general, h.264 y h.265 verán la mayor mejora en la decodificación por hardware.

Si aún así quieres probarlo, puedes intentar agregar esto a la línea ffmpeg-general de tu perfil; obliga a la tarjeta a usar un decodificador de hardware específico:

-c:v mpeg2_cuvid

Este debería ser el último parámetro en la línea ffmpeg-general.

Gracias por echarle un vistazo, Goose. Lo dejaré así entonces, ya que parece estar funcionando correctamente.

Independent Lens_WHRODT_2020_03_30_21_59_00.wtv-Independent Lens-2020-03-30T23-43-56.7z.zip (142,0 KB) Goose, veo otro problema. Cuando el programa se inicia, se vuelve loco usando handbrake, pero falla y luego vuelve a ffmpeg, que es mucho más lento.

He adjuntado dos registros de conversión que destacan el problema. Agradezco cualquier ayuda.eNASCAR iRacing Pro Invitational Series_FS1HD_2020_03_29_12_59_00.wtv-NASCAR-2020-03-29T16-49-48.log (2,2 MB)

O bien el video de origen tiene datos corruptos o tu controlador de video tiene un error y no puede procesarlo:

2020-03-30T23:52:19 MCEBuddy.AppWrapper.Handbrake → Encoding: task 1 of 1, 16.18 % (386.94 fps, avg 353.10 fps, ETA 00h06m30s)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] 1048.345459s: Film → Video
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] 1048.879272s: Video → Film
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 00000000050d4dc0] Failed unlocking input buffer!: generic error (20)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [h264_nvenc @ 00000000050d4dc0] Failed unlocking input buffer!: generic error (20)
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed
2020-03-30T23:52:20 MCEBuddy.AppWrapper.Handbrake → [23:52:20] encavcodec: avcodec_send_frame failed

Gracias por echarle un vistazo. Recientemente tuve que reconstruir mi servidor y, al reinstalar y reconstruir mis perfiles de MCE, desmarqué “seleccionar el mejor audio” y marqué “audio multicanal”.

No puedo explicarlo, pero desde entonces no he tenido el problema.

Lo comparto por si alguien más está teniendo un problema similar.

O puede que simplemente haya tenido un controlador corrupto o algo así y, al reconstruir el servidor, se solucionó.

¡Hola!

Estoy recibiendo mensajes de error similares al usar este comando:

ffmpeg -re -hwaccel cuvid -hwaccel_output_format cuda -extra_hw_frames 10 -i rtmp://xxxxxxxxx -map 0 -c:v h264_nvenc -b:v 2M -maxrate 2M -qmin 34 -qmax 51 -g 60 -bf 3 -b_ref_mode middle -bufsize 1M -c:a aac -ar 44100 -ac 1 -flush_packets 0 -f mpegts “udp:xxx.xxx.xxx.xxxx:xxxx”

[h264 @ 0x5641628791c0] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed → CUDA_ERROR_INVALID_VALUE: invalid argument
[h264 @ 0x5641628791c0] Using more than 32 (37) decode surfaces might cause nvdec to fail.
[h264 @ 0x5641628791c0] Try lowering the amount of threads. Using 16 right now.
[h264 @ 0x5641628791c0] Failed setup for format cuda: hwaccel initialisation returned error.

Por favor, dame algún consejo

¡Saludos!

¿Por qué estás usando hwaccel para la decodificación? Lo más probable es que solo ralentice tu conversión debido a la sobrecarga de transferencia de bus y memoria.

Hola Goose.

Tengo 30 canales en vivo funcionando al mismo tiempo, el servidor tiene 2 GPUs Quadro P5000, estoy usando hwaccel para decodificar para evitar sobrecargar los CPUs.

¡Saludos!

Probablemente lo harás más lento y consumirás más CPU al habilitar la decodificación por las razones mencionadas arriba cuando uses otras funciones del software (como codificación de audio, filtros, etc.). Intenta no usarlo.