如何在Python中正确向FFmpeg的-vf ass滤镜传递含空格的Windows路径?
解决Python调用FFmpeg加载ASS字幕时路径解析错误问题
你的问题出在Windows路径的反斜杠被FFmpeg当作转义字符处理,加上f-string的字符串拼接逻辑,导致原始路径被破坏,最终FFmpeg把残缺的路径当成了视频尺寸参数解析,才报出这个错误。
给你几个可行的解决办法:
方法1:将Windows路径的反斜杠替换为正斜杠
FFmpeg支持用正斜杠作为路径分隔符,直接替换后无需担心转义问题:
ass_path = r'C:\Users\username\Desktop\Title Of Video.ass'.replace('\\', '/') command = [ 'ffmpeg', '-i', mp4_path, '-vf', f"ass='{ass_path}'", '-c:v', 'libx264', '-c:a', 'copy', output_path ]
方法2:给路径中的反斜杠做双重转义
FFmpeg解析路径时,单个反斜杠会被当作转义符,所以需要把每个反斜杠换成两个反斜杠:
ass_path = r'C:\Users\username\Desktop\Title Of Video.ass'.replace('\\', '\\\\') command = [ 'ffmpeg', '-i', mp4_path, '-vf', f"ass='{ass_path}'", '-c:v', 'libx264', '-c:a', 'copy', output_path ]
方法3:使用FFmpeg滤镜的参数拆分写法(更规范)
避免在滤镜字符串里嵌套引号,改用FFmpeg滤镜的参数语法,把路径作为单独的参数传递,搭配方法1的正斜杠替换效果更好:
ass_path = r'C:\Users\username\Desktop\Title Of Video.ass'.replace('\\', '/') command = [ 'ffmpeg', '-i', mp4_path, '-vf', f'ass=filename={ass_path}', '-c:v', 'libx264', '-c:a', 'copy', output_path ]
内容的提问来源于stack exchange,提问作者Utopia
相关产品推荐
相关产品推荐

