|
|
@ -329,8 +329,8 @@ public class TranscodingService { |
|
|
|
title = "Unknown Artist"; |
|
|
|
title = "Unknown Artist"; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<String> result = new LinkedList<String>(Arrays.asList(StringUtil.split(command))); |
|
|
|
List<String> result = new LinkedList<>(Arrays.asList(StringUtil.split(command))); |
|
|
|
result.set(0, getTranscodeDirectory().getPath() + File.separatorChar + result.get(0)); |
|
|
|
result.set(0, getExecutableName(result)); |
|
|
|
|
|
|
|
|
|
|
|
File tmpFile = null; |
|
|
|
File tmpFile = null; |
|
|
|
|
|
|
|
|
|
|
@ -381,6 +381,20 @@ public class TranscodingService { |
|
|
|
return new TranscodeInputStream(new ProcessBuilder(result), in, tmpFile); |
|
|
|
return new TranscodeInputStream(new ProcessBuilder(result), in, tmpFile); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private String getExecutableName(List<String> transcodeTokens) { |
|
|
|
|
|
|
|
String executableName = transcodeTokens.get(0); |
|
|
|
|
|
|
|
String transcodeDirectoryPath = getTranscodeDirectory().getPath() + File.separatorChar + executableName; |
|
|
|
|
|
|
|
File file = new File(transcodeDirectoryPath); |
|
|
|
|
|
|
|
if(file.exists()) { |
|
|
|
|
|
|
|
if(!file.canExecute()) { |
|
|
|
|
|
|
|
throw new RuntimeException("Transcoder is not executable at " + transcodeDirectoryPath); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return transcodeDirectoryPath; |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
return executableName; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Returns an applicable transcoding for the given file and player, or <code>null</code> if no |
|
|
|
* Returns an applicable transcoding for the given file and player, or <code>null</code> if no |
|
|
|
* transcoding should be done. |
|
|
|
* transcoding should be done. |
|
|
|