如果目录路径或文件名中有 space,如何使 ffmpeg cmd 运行

How to make ffmpeg cmd run if there is space in director path or file name

我正在使用 ffmpeg 通过 android 剪切视频,一切正常,但只有当源目录包含 space 时才会出现问题,命令无法正常工作,提示找不到文件

-i /storage/emulated/0/ISave Videos/Br0gv9anKKg.mp4 -acodec copy -vcodec copy -ss 00:00:10 -t 00:00:20 /storage/emulated/0/1547813275685ChunkClip.mp4

找不到文件是赞"File not found -i /storage/emulated/0/ISave"

但对于其他路径没有问题,只有当 space 存在于文件路径中时,一切正常,问题才会出现

很酷的问题

即使我们找到了解决方案,也很难解决这类问题 以下 Link 显示了一些解决此类问题的方法 Quoting and escaping

所以对于你遇到的问题有修复将 ffmpeg 注释中的每个单词添加到 LinkedList,然后转换为命令数组,以便 ffmpeg 执行它

如下(根据您的要求命令)

List<String> cmdList = new LinkedList<>();
                cmdList.add("-i");
                cmdList.add("/storage/emulated/0/ISave Videos/Br0gv9anKKg.mp4");
                cmdList.add("-acodec");
                cmdList.add("copy");
                cmdList.add("-vcodec");
                cmdList.add("copy");
                cmdList.add("-ss");
                cmdList.add("00:00:10");
                cmdList.add("-t");
                cmdList.add("00:00:20");
                cmdList.add("/storage/emulated/0/1547813275685ChunkClip.mp4");

String[] command  = cmdList.toArray(new String[cmdList.size()]);

希望此解决方案能解决您的问题