我正在尝试在 Powershell 脚本中使用 FFmpeg 进行基本的硬字幕工作。代码如下:
$subfile = ".\test\sub.srt"
ffmpeg -i in.mp4 -c:v h264 -vf "subtitles=${subfile}:'force_style=fontsize=20'" out.mp4
当我运行此程序时,FFmpeg 中出现以下错误:
"Unable to open .testsub.srt"
$subfile
奇怪的是,FFmpeg 从变量中切断了反弹。
如果我像下面这样更改命令(删除$subfile
变量的花括号):
$subfile = ".\test\sub.srt"
ffmpeg -i in.mp4 -c:v h264 -vf "subtitles=$subfile:'force_style=fontsize=20'" out.mp4
这次 PowerShell 给出了如下错误:
"Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to delimit the name."
在 FFmpeg 命令中,上面的"
'
和:
符号都是必需的,所以很遗憾我无法更改它。我该怎么办?
谢谢。
答案1
当我尝试“Gyan”的解决方案时,它成功了。我还尝试将所有模式从更改为\
如下/
:
$subfile = ".\test\sub.srt"
$pattern = "[\\]"
$subfile = $subfile -replace $pattern, "/"
ffmpeg -i in.mp4 -c:v h264 -vf "subtitles=${subfile}:'force_style=fontsize=20'" out.mp4
答案2
这是我制作字幕的方法:
ffmpeg -y -i Bach720.mp4 -i bach.srt -vf "subtitles=bach.srt:force_style=FontName='Lobster Two,PrimaryColour=&H000000FF,FontSize=30'" BachSRT.mp4