ffmpeg hwaccel 没有剩余解码器表面

des*_*ord 8 gpu ffmpeg nvidia

最近我在Windows 10 amd64上原生编译了最新版本的ffmpeg 4.3。环境:CUDA11.0、NASM、VS2019、MYSY2 和 mingw64。

我还使用了补丁https://trac.ffmpeg.org/attachment/ticket/9019/0001-Patch-for-ticket-9019-CUDA-Compile-Broken-Using-MSVC.patch

编译功能为:

--enable-nonfree --enable-cuda-nvcc --enable-libnpp --enable-gpl --enable-libx264 --enable-cuda-llvm --enable-nvenc
--toolchain=msvc --extra-cflags=-I../nv_sdk --extra-ldflags=-libpath:../nv_sdk
Run Code Online (Sandbox Code Playgroud)

我测试了 ffmpeg 的 cuda 加速。CPU是AMD 3500x。GPU 是 RTX 2060Ultra。

发出此命令:

.\ffmpeg -hwaccel cuvid -i .\a.wmv -c:v hevc_nvenc -bf 4 -preset slow -c:a aac -b:a 256k myvideo.mp4
Run Code Online (Sandbox Code Playgroud)

但收到此错误:

[wmv3 @ 000002632DFC5180] No decoder surfaces left
Error while decoding stream #0:0: Cannot allocate memory
[hevc_nvenc @ 00000263300B1740] Failed locking bitstream buffer: out of memory (10):
video encoding failed: Cannot allocate memory
Run Code Online (Sandbox Code Playgroud)

我不确定我哪里出了问题。

Mob*_*isk 5

尝试添加-extra_hw_frames N到您的输入并增加 N 直到错误停止。我自己只需要8个。

我在 4.4 版本上也遇到了同样的问题。这是针对 4.1 的报告,但仅限于某些情况。有人在https://trac.ffmpeg.org/ticket/7562上建议了 -extra_hw_frames N 解决方法,它对我有用。