You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级FFmpeg至6.1.1后无法用CUDA转码,RTX4090求正确命令

FFmpeg 6.1.1 + RTX 4090 CUDA转码命令修正

问题背景

此前用FFmpeg 5.1搭配FFmpeg Batch工具,通过以下命令加前置参数-hwaccell cuvid可正常将4K视频转1080P:

-map 0 -map -0:t -filter_complex "scale_cuda=1920:1080:format=yuv420p:interp_algo=lanczos,hwdownload" -fps_mode:v passthrough -c:v h264_nvenc -preset 18 -profile:v high -level 4.1 -b:v 13000K -rc cbr -c:a copy -c:s copy

升级到FFmpeg 6.1.1后,改用-hwaccel cuda无法正常转码,先后出现Cannot find a matching stream for unlabeled input pad scale_cuda:default、格式转换不兼容、NVENC 10bit编码不支持等错误,替换-filter_complex为-vf也无效。

错误核心原因

  1. FFmpeg 6.x对CUDA硬件加速链路要求更严格,必须明确将输入帧上传到GPU后才能使用CUDA滤镜;
  2. 原命令未指定主视频流,导致编码器误尝试对非主视频流转码,触发10bit编码错误;
  3. scale_cuda在filter_complex中需要明确标记输入输出链路,否则无法匹配流。

修正后的转码命令

-hwaccel cuda -hwaccel_output_format cuda -map 0 -map -0:t -filter_complex "[0:v:0]hwupload_cuda,scale_cuda=1920:1080:format=yuv420p:interp_algo=lanczos,hwdownload,format=yuv420p[v]" -map "[v]" -fps_mode:v passthrough -c:v h264_nvenc -preset p18 -profile:v high -level 4.1 -b:v 13000K -rc cbr -c:a copy -c:s copy

关键调整说明

  • 硬件加速链路修正:添加-hwaccel_output_format cuda确保解码后的帧直接在GPU内存中,配合hwupload_cuda将帧上传到CUDA设备,让scale_cuda能直接处理GPU帧;
  • Filter链路明确:用[0:v:0]指定主视频流作为输入,[v]标记输出流,再通过-map "[v]"绑定到输出,避免流匹配错误;
  • 编码器参数兼容:将preset 18改为preset p18(FFmpeg 6.x中NVENC预设的标准写法,数字18为别名);
  • 格式统一:hwdownload后添加format=yuv420p确保输出帧格式与编码器要求一致,避免格式转换冲突;
  • 多流处理:明确指定主视频流,避免FFmpeg尝试对其他视频流转码,解决10bit编码错误。

备选简化命令(单视频流场景)

如果输入只有一条视频流,可改用-vf简化写法:

-hwaccel cuda -hwaccel_output_format cuda -map 0 -map -0:t -vf "hwupload_cuda,scale_cuda=1920:1080:format=yuv420p:interp_algo=lanczos,hwdownload,format=yuv420p" -fps_mode:v passthrough -c:v h264_nvenc -preset p18 -profile:v high -level 4.1 -b:v 13000K -rc cbr -c:a copy -c:s copy

内容的提问来源于stack exchange,提问作者Peppe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:42:11