Échec du décodage matériel dû à un paramètre non valide

J’essaie de faire fonctionner cela. J’ai une carte Quadro P1000, tous les tests CUDA passent, mais à l’exécution, cela échoue et bascule sur le logiciel. Le fichier journal est joint, voici l’erreur que je trouve :

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

Merci d’avance.Frontline_WHRODT_2019_05_14_21_59_00.wtv-Frontline-2019-05-15T07-06-32.9029270-04-00.log.zip (106,0 Ko)

En fait, l’erreur renvoyée par les pilotes graphiques concerne le décodage et non l’encodage. Il utilise toujours l’encodeur matériel :

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 demande de décodeur matériel provenant de ffmpeg est rejetée par la carte graphique, donc elle échoue. Il peut y avoir plusieurs raisons : peut-être que le flux vidéo n’a pas été identifié correctement pour utiliser le bon codec, ou peut-être que le décodage vidéo mpeg2 n’est pas pris en charge pour cette configuration de flux spécifique.

Vous ne verrez peut-être pas beaucoup d’amélioration des performances, puisque votre vidéo d’origine est en mpeg2 et que le décodage mpeg2 est assez efficace en logiciel. Il faudra peut-être simplement plus de temps pour copier toutes les données vidéo vers la mémoire graphique, les décoder, les renvoyer à ffmpeg, puis les renvoyer à la carte vidéo pour l’encodage. Habituellement, c’est le h.264 et le h.265 qui bénéficient le plus du décodage matériel.

Si vous souhaitez tout de même essayer, vous pouvez ajouter ceci à la ligne ffmpeg-general de votre profil ; cela force la carte à utiliser un décodeur matériel spécifique,

-c:v mpeg2_cuvid

Ce doit être le dernier paramètre de la ligne ffmpeg-general.

Merci d’avoir jeté un œil Goose. Je vais donc le laisser tel quel puisqu’il semble en fait fonctionner correctement.

Independent Lens_WHRODT_2020_03_30_21_59_00.wtv-Independent Lens-2020-03-30T23-43-56.7z.zip (142,0 Ko) Goose, je vois un autre problème. Quand le programme démarre, il s’emballe avec handbrake, mais plante, puis bascule vers ffmpeg qui est beaucoup plus lent.

J’ai joint deux journaux de conversion qui illustrent le problème. Toute aide est appréciée.eNASCAR iRacing Pro Invitational Series_FS1HD_2020_03_29_12_59_00.wtv-NASCAR-2020-03-29T16-49-48.log (2,2 Mo)

Soit la vidéo source contient des données corrompues, soit votre pilote vidéo a un bogue et ne peut pas la gérer :

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

Merci d’avoir jeté un œil. Alors, j’ai récemment dû reconstruire mon serveur et lorsque j’ai réinstallé et reconstruit mes profils MCE, j’ai décoché « sélectionner la meilleure audio » et coché « audio multicanal ».

Je ne peux pas l’expliquer, mais je n’ai plus eu le problème depuis.

Je le mentionne au cas où quelqu’un d’autre rencontrerait un problème similaire.

Ou alors j’avais simplement un pilote corrompu ou quelque chose du genre, et lorsque j’ai reconstruit le serveur, cela a réglé le problème.

Bonjour !

Je reçois des messages d’erreur similaires en utilisant cette commande :

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] Utiliser plus de 32 (37) surfaces de décodage peut provoquer l’échec de nvdec.
[h264 @ 0x5641628791c0] Essayez de réduire le nombre de threads. Utilisation de 16 actuellement.
[h264 @ 0x5641628791c0] Échec de configuration pour le format cuda : l’initialisation hwaccel a renvoyé une erreur.

S’il vous plaît, donnez-moi quelques conseils

Salutations !

Pourquoi utiliser hwaccel pour le décodage ? Cela risque simplement de ralentir votre conversion à cause du temps de transfert sur le bus et en mémoire.

Salut Goose.

J’ai 30 chaînes en direct qui tournent en même temps, le serveur possède 2 GPUs Quadro P5000, j’utilise hwaccel pour le décodage afin d’éviter de surcharger les CPUs.

Salut !

Vous risquez probablement de le ralentir et de consommer plus de CPU en activant le décodage pour les raisons mentionnées ci-dessus lorsque vous utilisez d’autres fonctionnalités logicielles (comme l’encodage audio, les filtres, etc.). Essayez de ne pas l’utiliser.