Передача Java в FFMPEG не работает и не выдает ошибку ⇐ JAVA
-
Anonymous
Передача Java в FFMPEG не работает и не выдает ошибку
Я пишу загрузчик подкастов, в котором хочу иметь возможность загружать один или несколько подкастов, а затем запускать их через FFMPEG.
Она запускается, когда я запускаю программу в Windows.
Он не запускается, когда я запускаю программу в Linux. Это означает, что FFMPEG мог быть вызван, а мог и не быть вызван. У меня нет возможности узнать. Я получаю -1 в ответ от процесса.waitfor(), но в моих журналах Java нет ошибок и вообще нет записей в файле ffmpeg.log. И в каталоге обработанных файлов нет файла, который мог бы создать FFMPEG.
Он работает в Linux, если я запускаю из командной строки ту же команду, которая не работает в Java.
У FFMPEG есть разрешения: rwxr-xr-x , поэтому не похоже, что это ошибка разрешения. Код Java выглядит так:
ProcessBuilderprocessBuilder = новый ProcessBuilder(команды); processBuilder.redirectErrorStream(истина); // Добавлена следующая строка, чтобы проверить, смогу ли я зарегистрировать ошибку из ffmpeg processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo(new File( "./ffmpeg.log" ) )); Процесс процесса = процессBuilder.start(); BufferedReader bufferedOutputReader = новый BufferedReader (новый InputStreamReader (process.getInputStream())); делать { outputString = bufferedOutputReader.readLine(); если (выходная строка!= ноль) { LOGGER.trace(выходная строка); } } Пока (outputString!= null); результаты = процесс.waitFor(); LOGGER.debug("Значение выхода: " + результаты); Команды:
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils — командная строка: /bin/ffmpeg 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -y 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -i 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "/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 - командная строка: -ac 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: 1 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -af 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "atempo=1.4,volume=1.4" 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "/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.
Она запускается, когда я запускаю программу в Windows.
Он не запускается, когда я запускаю программу в Linux. Это означает, что FFMPEG мог быть вызван, а мог и не быть вызван. У меня нет возможности узнать. Я получаю -1 в ответ от процесса.waitfor(), но в моих журналах Java нет ошибок и вообще нет записей в файле ffmpeg.log. И в каталоге обработанных файлов нет файла, который мог бы создать FFMPEG.
Он работает в Linux, если я запускаю из командной строки ту же команду, которая не работает в Java.
У FFMPEG есть разрешения: rwxr-xr-x , поэтому не похоже, что это ошибка разрешения. Код Java выглядит так:
ProcessBuilderprocessBuilder = новый ProcessBuilder(команды); processBuilder.redirectErrorStream(истина); // Добавлена следующая строка, чтобы проверить, смогу ли я зарегистрировать ошибку из ffmpeg processBuilder.redirectOutput( ProcessBuilder.Redirect.appendTo(new File( "./ffmpeg.log" ) )); Процесс процесса = процессBuilder.start(); BufferedReader bufferedOutputReader = новый BufferedReader (новый InputStreamReader (process.getInputStream())); делать { outputString = bufferedOutputReader.readLine(); если (выходная строка!= ноль) { LOGGER.trace(выходная строка); } } Пока (outputString!= null); результаты = процесс.waitFor(); LOGGER.debug("Значение выхода: " + результаты); Команды:
2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils — командная строка: /bin/ffmpeg 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -y 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -i 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "/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 - командная строка: -ac 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: 1 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: -af 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "atempo=1.4,volume=1.4" 2023-10-25 16:21:52,452 224257 [pool-1-thread-4] DEBUG org.sperbolink.utils.CodecUtils - командная строка: "/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 когда-либо будет достигнут.
Что я делаю не так?
Мобильная версия