ffmpeg hwaccel 没有剩下的解码器表面
Posted
技术标签:
【中文标题】ffmpeg hwaccel 没有剩下的解码器表面【英文标题】:ffmpeg hwaccel no decoder surfaces left 【发布时间】:2021-06-04 22:15:52 【问题描述】:最近我在 Windows 10 amd64 上原生编译了最新版本的 ffmpeg 4.3。 环境:CUDA11.0、NASM、VS2019、MYSY2 with 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
我测试了 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
但收到此错误:
[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
我不确定我哪里出错了。
【问题讨论】:
我下载 gyan.dev ffmpeg。面临同样的问题 【参考方案1】:尝试添加 -extra_hw_frames 2。
我在 4.4 版上也遇到了同样的问题。这是针对 4.1 报告的,但仅在某些情况下。有人在 https://trac.ffmpeg.org/ticket/7562 上建议了 -extra_hw_frames 2 解决方法,它对我有用。
【讨论】:
以上是关于ffmpeg hwaccel 没有剩下的解码器表面的主要内容,如果未能解决你的问题,请参考以下文章
在 RTX 3080 上使用 ffmpeg 在 h264 中编码失败