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

PowerShell中FFmpeg命令的ASS文件路径转义方法求助

PowerShell中FFmpeg加载ASS字幕路径转义问题解决

问题现象

在PowerShell环境下使用FFmpeg为MP4文件添加ASS字幕时,出现路径解析错误,FFmpeg报错无法将路径解析为图像尺寸,核心错误日志如下:

[Parsed_ass_0 @ 0000018dbe6300c0] Unable to parse option value "/Users/X/AppData/Local/Temp/subtitles.ass" as image size
[fc#-1 @ 0000018dbe430700] Error applying option 'original_size' to filter 'ass': Invalid argument

错误代码段

问题出在路径处理与FFmpeg参数构造部分:

$assPathFixed = $assPath -replace '\\', '/'

$ffmpegArgs = @(
    "-i", $videoPath,
    "-vf", "ass='$assPathFixed'",
    "-c:a", "copy",
    "-y", $outputPath
)

原因分析

FFmpeg的ass滤镜参数格式为ass=filename[:options],当用单引号包裹路径时,PowerShell传递参数后,FFmpeg会将单引号视为路径的一部分,导致路径被错误分割:'C:/Users/...'会被解析为'C作为文件名,后续的/Users/...'被当成original_size选项的值,从而触发尺寸解析错误。

解决方案

以下几种写法均可正确处理路径:

方案1:直接使用原始Windows路径(无空格时优先)

不需要替换斜杠,直接将原始路径传入ass参数:

$ffmpegArgs = @(
    "-i", $videoPath,
    "-vf", "ass=$assPath",
    "-c:a", "copy",
    "-y", $outputPath
)

方案2:路径含空格时,用转义双引号包裹

如果路径包含空格,在PowerShell中用反斜杠转义双引号,确保FFmpeg识别完整路径:

$ffmpegArgs = @(
    "-i", $videoPath,
    "-vf", "ass=`"$assPath`"",
    "-c:a", "copy",
    "-y", $outputPath
)

方案3:保留斜杠替换,但去掉单引号

若习惯用正斜杠路径,只需去掉单引号即可:

$assPathFixed = $assPath -replace '\\', '/'
$ffmpegArgs = @(
    "-i", $videoPath,
    "-vf", "ass=$assPathFixed",
    "-c:a", "copy",
    "-y", $outputPath
)

验证

修改参数构造后,FFmpeg会正确识别ASS文件路径,不再触发路径解析错误,字幕可正常嵌入视频。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.01 13:22:43