使用NVidia GTX950M时,FFMPEG hevc_nvenc报错"No NVENC capable devices found"。

8
我尝试进行简单的编码时,会出现“未找到NVENC兼容设备”的错误提示,即使我跳过音频编码以确保它不是音频问题。
ffmpeg.exe -i input.mp4 -c:v hevc_nvenc -an out.mp4

我尝试了更多的细节,如设置像素格式、预设、速率控制和格式。
在文档页面上: https://trac.ffmpeg.org/wiki/HWAccelIntro 上面说如果出现这个错误,我们应该检查像素格式。这里的视频是yuv420p,即使指定格式也会产生相同的错误。
我还检查了NVidia支持的卡片,它说GeForce,但没有关于型号的详细信息: https://developer.nvidia.com/video-encode-decode-gpu-support-matrix#Encoder 我尝试了h264_nvenc,它完美地工作,但hevc_nvenc有问题。有人遇到过这个问题吗?
完整的控制台输出:
[h264 @ 0000000002534560] Reinit context to 1280x544, pix_fmt: yuv420p
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 1
    compatible_brands: isom
    creation_time   : 2014-05-23T13:04:15.000000Z
  Duration: 01:54:03.95, start: 0.000000, bitrate: 3193 kb/s
    Stream #0:0(und): Video: h264 (High), 1 reference frame (avc1 / 0x31637661), yuv420p(left), 1280x544 [SAR 1:1 DAR 40:17], 2750 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
    Metadata:
      creation_time   : 2014-05-23T11:25:27.000000Z
    Stream #0:1(spa): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 439 kb/s (default)
    Metadata:
      creation_time   : 2014-05-23T12:56:43.000000Z
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> hevc (hevc_nvenc))
Press [q] to stop, [?] for help
[h264 @ 000000000260ea40] Reinit context to 1280x544, pix_fmt: yuv420p
[graph 0 input from stream 0:0 @ 0000000003857ec0] w:1280 h:544 pixfmt:yuv420p tb:1/24000 fr:24000/1001 sar:1/1 sws_param:flags=2
[hevc_nvenc @ 00000000038574e0] Loaded Nvenc version 8.0
[hevc_nvenc @ 00000000038574e0] Nvenc initialized successfully
[hevc_nvenc @ 00000000038574e0] 1 CUDA capable devices found
[hevc_nvenc @ 00000000038574e0] [ GPU #0 - < GeForce GTX 950M > has Compute SM 5.0 ]
[hevc_nvenc @ 00000000038574e0] Codec not supported
[hevc_nvenc @ 00000000038574e0] No NVENC capable devices found
[hevc_nvenc @ 00000000038574e0] Nvenc unloaded
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
1个回答

12

实际上,950M不支持h265编解码器。

nvidia nvenc页面详细支持矩阵可以看出,仅从第二代Maxwell GPU开始支持 h265/hevc编解码。

同时,查看Maxwell维基页面NVIDIA GPU列表 。你会发现950M的代码名称是GM107 ,这是第一代Maxwell架构,这意味着没有h265支持。很抱歉,您必须回退到使用h264。


1
哇!非常感谢你提供的所有链接,这对我来说非常有用!我差点买了支持HEVC的GTX960电脑...真希望我早点看到这个。 - NaturalBornCamper
我的显卡是GT 750M,所以我猜它也不支持x265_NVENC,但有没有什么解决方法?我正试图对一个小200 MB的文件进行编码。 - himanshuxd
@himanshuxd 不,目前没有硬件支持这个功能。基本上你需要一个GPU上的硬件解码器,它是一个独立的嵌入式单元。如果你需要更快的编码器,可以尝试使用英特尔QSV或者CUDA解决方案(如果有的话)。 - halfelf
@halfelf 啊,我试着用ImToo Video Converter Ultimate(启用CUDA和所有4个CPU核心后)将一个大约250 MB的.mkv视频转换成h.265格式,最终结果播放时还算可以,没有卡顿,但问题是视频文件无法快进或倒退,会出现严重的画面中断。看来我们需要更好的硬件才能完美地将视频转换为x265格式。 - himanshuxd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接