#3879 自定义ffmpeg参数无效,-hwaccel cuda -hwaccel_device 0 -c:v h264_nvenc -qsv disable

153.121* Posted at: 22 days ago 👁98

-hwaccel cuda -hwaccel_device 0 -c:v h264_nvenc -qsv disable

还是报错

splitting the argument list: Option not found


=
system:Windows-10-10.0.26200-SP0
version:v3.98
frozen:True
language:zh
root_dir:G:/pyVideoTrans

9 Replies

这是由于自定义的 ffmpeg 参数格式不正确导致的。错误信息 splitting the argument list: Option not found 表明 ffmpeg 无法识别您输入的参数组合或格式。

解决方案:

  1. 检查参数格式:在“高级选项”的“自定义ffmpeg命令参数”框中,应只输入参数本身,不要包含 ffmpeg 命令。例如,应输入 -hwaccel cuda -hwaccel_device 0 -c:v h264_nvenc,而不是 ffmpeg -hwaccel cuda ...
  2. 简化参数:尝试只使用最核心的硬件加速参数进行测试,例如 -hwaccel cuda -hwaccel_device 0。确认有效后再添加 -c:v h264_nvenc
  3. 检查显卡支持:确保您的 NVIDIA 显卡支持 NVENC 编码(通常 GTX 10系列及以上支持)。您可以在“高级选项”中直接勾选“视频合成优先硬编码”,软件会自动尝试使用硬件编码,这可能比手动输入参数更可靠。
  4. 检查 CUDA 环境:确保已正确安装 CUDA 12.8 和 cuDNN,并且环境变量配置正确。
  5. 参数冲突:如果同时勾选了“强制软编码视频?”,它将覆盖您的硬件编码参数,请确保此项未勾选。

如果问题依旧,请提供 logs 文件夹中最新日志文件的底部约30行报错信息。

请查阅相关文档:

-hwaccel cuda -hwaccel_device 0 也不行

错误信息:

parsing options for output file G:/pyVideoTrans/tmp/10004/3e73c8eb2f/en.wav. opening output files: Invalid argument

system:Windows-10-10.0.26200-SP0
version:v3.98
frozen:True
language:zh
root_dir:G:/pyVideoTrans

这是由于自定义的 ffmpeg 硬件加速参数被错误地应用到了音频输出环节导致的。错误信息 parsing options for output file ... en.wav. opening output files: Invalid argument 表明,您输入的 -hwaccel cuda 等参数是针对视频编码的,但在处理音频(如生成 .wav 文件)时,这些参数无效,导致 ffmpeg 命令执行失败。

解决方案:

  1. 移除自定义参数:立即前往 菜单 -> 工具 -> 高级选项,在“自定义ffmpeg命令参数”框中,清空所有内容
  2. 使用内置硬件编码选项:在同一“高级选项”面板的“视频输出控制”部分,勾选“视频合成优先硬编码”。软件会自动检测并使用合适的硬件编码器(如 h264_nvenc),这比手动输入参数更安全可靠。
  3. 检查并启用CUDA加速:在主界面右上角,确保已勾选“CUDA加速”。这仅用于加速语音识别(Whisper)阶段,与视频编码无关,但需确保CUDA环境正确。
  4. 验证CUDA环境:在CMD中运行 nvcc -Vnvidia-smi,确认CUDA版本为12.8且显卡驱动正常。
  5. 重新尝试:清空自定义参数并勾选“视频合成优先硬编码”后,重新运行翻译任务。

如果问题依旧,请提供 logs 文件夹中最新日志文件的底部约30行报错信息。

请查阅相关文档:

CUDA 为 13.2

CUDA 13.2 版本与软件内置支持的 CUDA 12.8 不兼容,这可能导致 GPU 加速无法正常工作。虽然您遇到的 ffmpeg 参数错误已通过移除自定义参数解决,但 CUDA 版本不匹配会影响语音识别阶段的加速。解决方案:降级 CUDA 版本:卸载当前的 CUDA 13.2,并安装与软件兼容的 CUDA 12.8。安装对应的 cuDNN:从 NVIDIA 官网下载与 CUDA 12.8 匹配的 cuDNN 9.x 版本,并按照教程进行安装和配置。验证安装:安装完成后,在 CMD 中运行 nvcc -V 确认版本为 12.8,运行 nvidia-smi 查看显卡状态。在软件中启用:确保主界面右上角的“CUDA加速”已勾选。如果暂时不想降级 CUDA,可以继续使用 CPU 进行语音识别,但处理速度会非常慢。请查阅相关文档:Windows上安装CUDA12.8和cuDNN9.11

自定义参数改为 -hwaccel cuda -hwaccel_device 0 试试。如果还不行,就是无法自定义了,目前的自定义参数是放在最后,位于输出视频文件之前的位置,你使用的这个自定义参数应位于输入视频之前。

可以试试这种方法,指定默认gpu

在 Windows 上,右键点击“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
在“系统变量”或“用户变量”中,点击“新建”。
变量名:CUDA_VISIBLE_DEVICES
变量值:根据您的 nvidia-smi 显示,如果您的 5070 Ti 现在是 GPU 0,则填写 0;如果它是 GPU 1,则填写 1。这个数字是 nvidia-smi 命令输出中最左侧的序号。
点击“确定”保存所有设置。
重要:设置完成后,必须完全关闭并重新启动 pyVideoTrans 软件,新的环境变量才会生效。

如何能启用-c:v h264_nvenc -preset p4,我看log里都是用的h264_qsv


Application started at 2026-04-08 15:00:54

First searching GPU...
[DEBUG] 返回缓存的编解码器 Windows-264: h264_qsv
[DEBUG] 返回缓存的编解码器 Windows-265: hevc_qsv
NVIDIA_GPU_NUMS=1
Found 1 GPUs, cost=2s
start workers...
process_max_gpu=1
multi_gpus=False
Concurrent task_nums=1

process_max=5


==准备要嵌入的字幕:self.cfg.subtitle_type=1
=
[DEBUG] 最终确定字幕嵌入类型:1 ,目标字幕语言:chi, 字幕文件:G:/pyVideoTrans/tmp/1152/b8f027ffde/end.srt

[DEBUG] 视频定格应延长1ms,实际向上取整秒延长0.001s,操作成功。
[DEBUG] 返回缓存的编解码器 Windows-264: h264_qsv
[DEBUG] 原始hw_type='h264_qsv'
[DEBUG] 整理后hw_type='qsv'
[DEBUG] 硬字幕合成时,优先硬件编码命令:['ffmpeg', '-hide_banner', '-ignore_unknown', '-y', '-progress', 'compose1775633046.7088964.txt', '-i', 'novoice.mp4', '-i', 'origin_audio.m4a', '-map', '0:v', '-map', '1:a', '-c:a', 'copy', '-vf', "subtitles=filename='end.ass'", '-c:v', 'h264_qsv', '-global_quality', '24', '-preset', 'faster', '-movflags', '+faststart', '-fps_mode', 'vfr', '-t', '1125.966000', 'laste_target.mp4']
[DEBUG] 合成硬字幕时,优先硬件编码成功
[DEBUG] 检测到硬件编码器 h264_qsv,正在调整参数...

根据日志,软件检测并自动使用了 Intel Quick Sync Video (QSV) 硬件编码器 h264_qsv,而不是 NVIDIA 的 h264_nvenc。要强制使用 h264_nvenc,需要调整设置。解决方案:设置环境变量指定 GPU:按照开发者回复,设置系统环境变量 CUDA_VISIBLE_DEVICES=0(假设您的 5070 Ti 是 GPU 0),并重启软件。这有助于系统优先识别 NVIDIA 显卡。禁用 Intel QSV 编码:在“高级选项”的“视频输出控制”部分,取消勾选“视频合成优先硬编码”。这会强制软件使用软件编码(libx264)。然后,在“自定义ffmpeg命令参数”框中输入 -c:v h264_nvenc -preset p4。注意:此参数会应用于所有 ffmpeg 命令,可能在某些环节(如音频处理)导致错误。如果出错,请清空此框。使用命令行模式(高级):如果您熟悉命令行,可以尝试直接修改 videotrans/task/taskcfg.py 中的视频合成命令,但这需要源码部署能力。验证:设置后重新运行任务,检查日志中是否出现 h264_nvenc。如果 h264_nvenc 编码失败或导致其他错误,建议接受软件自动选择的 h264_qsv,它同样是硬件编码,效率很高。请查阅相关文档:提高视频输出质量

会首先尝试检测 h264_nvenc 是否可用,如果可用,将直接使用它,实际用到了 qsv,说明不支持或检测支持失败。

可以删掉 软件目录/videotrans/codec.json 文件,然后重试,将再次检测支持的ffmpeg编码器。

Post Your Reply
Open source and free maintenance is not easy. If this project is helpful to you, please consider making a small donation to help the project continue to maintain and update.

Related resource