Он запускается, когда Я запускаю программу в Windows.
Она не запускается, когда я запускаю программу в Linux. Это означает, что FFMPEG мог быть вызван, а мог и не быть вызван. У меня нет возможности узнать. Я получаю -1 в ответ от процесса.waitfor(), но в моих журналах Java нет ошибок и вообще нет записей в файле ffmpeg.log. И в каталоге обработанных файлов нет файла, который мог бы создать FFMPEG.
Он запускается в Linux, если я запускаю ту же команду, которая завершается с ошибкой в Java, из командной строки. .
FFMPEG имеет разрешения: rwxr-xr-x , поэтому не похоже, что это ошибка разрешения. Код Java выглядит так:
Код: Выделить всё
ProcessBuilder processBuilder = new ProcessBuilder( commands );
processBuilder.redirectErrorStream( true );
// Added the next line to see if I could log an error from ffmpeg
processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );
Process process = processBuilder.start();
BufferedReader bufferedOutputReader = new BufferedReader( new InputStreamReader( process.getInputStream() ) );
do {
outputString = bufferedOutputReader.readLine();
if ( outputString != null ) {
LOGGER.trace( outputString );
}
} while ( outputString != null );
results = process.waitFor();
LOGGER.debug( "Exit value: " + results );
Код: Выделить всё
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: /bin/ffmpeg
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -y
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -i
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -ac
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: 1
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: -af
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "atempo=1.4,volume=1.4"
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - command string: "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"
Код: Выделить всё
/bin/ffmpeg -y -i "/home/todd/aggregator/incoming/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3" -ac 1 -af "atempo=1.4,volume=1.4" "/home/todd/aggregator/processed/Downrange Radio/Downrange_Radio_2023-02-15_The_Avidity_PD-10_Delivers_.mp3"
Что я делаю не так?
Файл ffmpeg.log пуст, поэтому я сомневаюсь, что FFMPEG когда-либо будет достигнут.
Что я делаю не так?
Файл ffmpeg.log пуст, поэтому я сомневаюсь, что FFMPEG когда-либо будет достигнут.
Что я делаю не так?
Файл ffmpeg.log пуст, поэтому я сомневаюсь, что FFMPEG когда-либо будет достигнут.
Что я делаю неправильно?
Файл ffmpeg.log пуст, поэтому я сомневаюсь, что FFMPEG когда-либо будет достигнут.
Что я делаю неправильно?
Файл ffmpeg.log пуст, поэтому я сомневаюсь, что FFMPEG когда-либо будет достигнут.
Что я делаю неправильно? p>
РЕДАКТИРОВАТЬ:
Я изменил команды на
Код: Выделить всё
"/bin/ffmpeg 2> foo.txt"
Код: Выделить всё
ProcessBuilder processBuilder = new ProcessBuilder( commands );
// processBuilder.redirectErrorStream( true );
// Added the next line to see if I could log an error from ffmpeg
// processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo( new File( "./ffmpeg.log" ) ) );
Process process = processBuilder.start();
results = process.waitFor();
РЕДАКТИРОВАНИЕ 2:
Я преобразовал путь /bin/ffmpeg в верхний регистр, чтобы посмотреть, вернется ли он ошибка, и это произошло.
Код: Выделить всё
ERROR org.mrpc.utilities.ShellUtils - Cannot run program "/BIN/FFMPEG": error=2, No such file or directory
РЕДАКТИРОВАТЬ 3:
Я говорил об этом год назад, но недавно пришлось вернуться к нему. На этот раз я нашел ответ. Это потому, что я заключил некоторые параметры команды в двойные кавычки. Из-за этого файлы не были найдены. В этой ссылке указано, что класс Process обрабатывает встроенные пробелы без какого-либо вашего вмешательства: ProcessBuilder добавляет дополнительные кавычки в командную строку
Подробнее здесь: https://stackoverflow.com/questions/773 ... ving-error
Мобильная версия