FFmpeg合并含空格与单引号路径视频时批处理脚本报错求助
解决FFmpeg Concat因路径含单引号导致的路径截断问题
你的问题核心在于路径里的单引号和concat列表文件里的单引号分隔符冲突了!当路径是E:\Videos\Ryan's Videos时,用单引号包裹路径后,FFmpeg会把Ryan后面的那个单引号当成字符串结束标记,直接截断路径为E:\Videos\Ryans,剩下的内容自然就无法识别了。
修复方案:改用双引号包裹路径
只需要修改生成mylist.txt时的引号类型,同时处理批处理里的双引号转义逻辑,就能完美解决问题。修改后的完整批处理脚本如下:
(for %%i in (%*) do @echo file "%%~i") > mylist.txt C:\ffmpeg\bin\ffmpeg.exe -f concat -safe 0 -i "%cd%\mylist.txt" -c copy "%cd%\output.mp4" pause
为什么这个方案有效?
- 批处理中用双引号包裹路径时,你的路径里只有单引号(
'),不会和双引号产生冲突,生成的mylist.txt内容会是:file "E:\Videos\Ryan's Videos\1.mp4" file "E:\Videos\Ryan's Videos\2.mp4" - FFmpeg读取concat列表时,双引号作为字符串包裹符,能准确识别包含单引号的完整路径,不会再出现路径截断的错误。
额外小提示
如果后续遇到路径同时包含单引号和双引号的极端场景,还可以用FFmpeg支持的转义方式:把路径里的'替换成\',不过对于当前你的场景,用双引号的方案已经是最简单直接的了。
内容的提问来源于stack exchange,提问作者RyanMe321
相关产品推荐
相关产品推荐

