ffmpeg -i “input.mkv” -i “input.chs&jpn.ass” -c copy "output/output1.mkv"
这样的命令由 Java 代码来执行
java
List command = new ArrayList();
command.add(ffmpegPath);
command.add("-i");
//输入视频文件 File
command.add(file.getAbsolutePath());
command.add("-i");
//输入字幕文件 File
command.add(sub.getAbsolutePath());
command.add("-c");
command.add("copy");
//拼接输出路径
command.add((new File(out,fileName)).getAbsolutePath());
由于考虑多平台运行,所以路径获取和拼接都是通过 File ,没有自己加 Separate 。
在 windows 编译执行没问题,成功进行了分类
但是在 linux,总是执行失败
Log 以后,提示是这样的:
INFO: "/home/codeTest/ffmpegSubTest/[Kamigami&VCB-Studio] Boku dake ga Inai Machi [01][Ma10p_1080p][x265_flac_ac3].mkv": No such file or directory
其实已经分好类了,也就是说 File 对象指向是符合我预期的,只是创建文件夹利用的是 Java File 类的 mkdirs ()。
那就是 ffmpeg 命令这里参数出了问题,我试过给参数再套一层双引号(""),同样是 win 编译执行 ok ,linux “No such file or directory”
请问如何处理参数问题,或者有更好的解决方案希望能赐教
java Process 在不同平台执行看了会源码没看太明白。