想让它跑起来。我有一张 Quadro P1000 显卡,所有 CUDA 检测都通过,但运行时失败并回退到软件模式。日志文件已附上,我看到的错误是:
[mpeg2video @ 0000026adf73eb00] decoder->cvdl->cuvidCreateDecoder(&decoder->decoder, params) failed → CUDA_ERROR_INVALID_VALUE: invalid argument
提前感谢。Frontline_WHRODT_2019_05_14_21_59_00.wtv-Frontline-2019-05-15T07-06-32.9029270-04-00.log.zip (106.0 KB)
Goose
(Goose)
2019年05月15日13:13
2
其實圖形驅動程式回報的錯誤與「解碼」有關,而非編碼。它仍在使用硬體編碼器:
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
ffmpeg 對硬體解碼器的請求被顯示卡拒絕,因此失敗。可能有幾個原因,也許它沒有正確識別該使用哪種解碼器,或是該特定串流組態的 mpeg2 影像解碼不受支援。
由於原始影片是 mpeg2,而 mpeg2 的軟體解碼已經相當高效,你可能看不到明顯效能提升;反而可能因為需要把影像資料複製到顯示記憶體、解碼後再傳回 ffmpeg,再送回顯示卡編碼,而花費更多時間。通常 h.264 與 h.265 在硬體解碼上才會有最大幅度的加速。
若你仍想嘗試,可在設定檔的 ffmpeg-general 行加入以下參數,強制使用特定 的硬體解碼器:
-c:v mpeg2_cuvid
這應該是 ffmpeg-general 行的最後一個參數。
謝謝你幫我看,Goose。既然它實際上似乎運作正常,那我就先不管它了。
Goose
(Goose)
2020年03月31日16:11
5
可能是來源影片資料損毀,或是您的顯示卡驅動程式有 Bug,無法處理該資料:
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
谢谢你的分享。是这样的,我最近不得不重建服务器,当我重新安装并重建 MCE 配置文件时,我取消了“选择最佳音频”并勾选了“多声道音频”。
我无法解释,但此后就再也没遇到这个问题。
我把这个经验分享出来,以防其他人也遇到类似情况。
或者也可能只是驱动程序损坏,重建服务器时顺带修复了。
Lealpa
(Leonardo Pagotto)
2023年12月10日00:01
7
你好!
我在使用這個命令時也遇到類似的錯誤訊息:
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.
請給我一些建議
敬上!
Goose
(Goose)
2023年12月16日23:51
8
你为什么要在解码时使用 hwaccel?这很可能会因为总线和内存传输开销而拖慢转换速度。
Lealpa
(Leonardo Pagotto)
2023年12月18日14:09
9
嗨,Goose。
我同時有30個直播頻道在運行,伺服器有2張Quadro P5000 GPU,我正在使用hwaccel進行解碼以避免CPU過載。
乾杯!
Goose
(Goose)
2023年12月18日21:07
10
由于上述原因,当你使用其他软件功能(如音频编码、滤镜等)时启用解码,很可能会拖慢速度并占用更多 CPU。建议不要启用。