我正在使用WritingMinds/ffmpeg-android-java库的最新版本。
我已经尝试过单引号/双引号,但是没有成功。
我在执行后记录了命令, 请查看子目录包含whiteSpace的输入路径,空格之间已添加逗号:
ffmpeg, -i, "storage/emulated/0/Telegram/Telegram, Video/4_5828137322067002802.mp4", -vf...
我这样分割并运行命令:
String crop = "-ss " + skipTimeForCrop + " -noautorotate -i " + newPath + " -vframes 10 -vf cropdetect=24:16:0 -f null -";
String[] cropCommand = crop.trim().split(" ");
execFFmpegForCrop(cropCommand);
存储/仿真/ 0 /电报/电报:没有此类文件或目录
对此有任何想法吗?
答案 0 :(得分:1)
我相信将命令添加为List
并将其转换为数组将解决此问题,
这样,逗号仅应添加到每个命令的末尾。我将向您展示如何:
List<String> commandList = new LinkedList<>();
commandList.add("-ss");
commandList.add("00:00:00");
commandList.add("-noautorotate");
commandList.add("-i");
commandList.add("storage/emulated/0/Telegram/Telegram Video/4_5828137322067002802.mp4");
commandList.add("-vframes");
commandList.add("10");
commandList.add("-vf");
commandList.add("-cropdetect=24:16:0");
.
.
.
String[] cropCommand = commandList.toArray(new String[commandList.size()]);
execFFmpegForCrop(cropCommand);
这将是输出:
"[-ss, 00:00:00, -noautorotate, -i, storage/emulated/0/Telegram/Telegram Video/4_5828137322067002802.mp4, -vframes, 10, -vf, -cropdetect=24:16:0, ...]";
答案 1 :(得分:1)
因为您使用命令String[] cropCommand = crop.trim().split(" ");
这将剪切包含空格“”的文件名,并且输入文件将失败
答案 2 :(得分:0)
尝试在空格前使用双反斜杠:
"storage/emulated/0/Telegram/Telegram,\\ Video/4_5828137322067002802.mp4"
答案 3 :(得分:0)
首先用一些令人毛骨悚然的字符串替换文件路径的空白,然后在运行ffmpeg.execute()时用空格替换该令人毛骨悚然的字符串。
喜欢:
String input_path = txt_selected_file.getText().toString().replace(" ","%20");
String cmd = "-i "+ input_path+" -vn -ab 320 -preset ultrafast /storage/emulated/0/Movies/Messenger/test.mp3";
executeCmd(cmd);
in executecmd() method
private void executeCmd(final String command) {
try {
String[] cmd = command.split(" ");
for(int i = 0; i<cmd.length;i++){
cmd[i] = cmd[i].replace("%20"," ");
}
}