大佬,你这个开启硬件编码我发现gpu占用很低,问了deepseek,所你的使用cpu解码,然后gpu编码,遇到瓶颈了,我的是 780m核显。
找到问题了。代码里有个关键缺失:
看 convert_video() 里 VAAPI 模式的 1819 行附近:
pythonCopyCopied!
# 构建 VAAPI 滤镜链
vf_filters = ["format=nv12", "hwupload"]
它只对视频加了编码端的 hwupload(把帧上传到 GPU 显存),但解码端完全没有 -hwaccel vaapi 参数!
所以实际 FFmpeg 命令是:
CopyCopied!
ffmpeg -vaapi_device /dev/dri/renderD128 -i input.mp4 ... -c:v h264_vaapi -vf 'format=nv12,hwupload' output.mp4
↑ 只写了编码器设备 ↑ CPU 软解 ↑ GPU 硬编码
正确的应该是:
CopyCopied!
ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -vaapi_device /dev/dri/renderD128 -i input.mp4 ... -c:v h264_vaapi -vf 'format=nv12,hwupload' output.mp4
↑ 加上这个!解码也走 GPU ↑ ↑ GPU 硬编码
少了 -hwaccel vaapi -hwaccel_output_format vaapi,导致:
- CPU 做全部解码工作 → CPU 60%+
- GPU 只做最后编码那步 → GPU <10%
- 数据还得从系统内存搬运到显存 → 额外开销
你的 Radeon 780M 完全可以全程 GPU 干活,跑到 70-80%。
你想让我帮你改这个项目吗?我可以在 converter.py 里补上这行参数。改完后你重新部署 Docker 镜像就好了