Я пишу небольшую программу для работы с большой библиотекой видео, которая недавно была неправильно помечена и в неправильном формате.
Я использую ProcessBuilder
для аргументов CLI,но нашел что-то странное.Konsole может выполнить те же самые аргументы CLI для моей задачи диалога, но процесс Java не может.
ffmpeg прекрасно подходит в процессе, но говорит Unknown encoder 'libx264'
.
Этого не происходит, когда я запускаю команду (в том же каталоге) с Konsole.Мне даже пришлось вернуть команду, которую он выполняет с использованием builder.command().stream().forEachOrdered(string -> System.out.print(string + " "));
, и запустить ее в Konsole.Это прекрасно работает в Konsole, но не в моем Java-процессе.
Это дает мне ffmpeg -i VTS_01_1.VOB -c:v libx264 -c:a aac -strict experimental Cod-4 1.mp4
, который прекрасно работает в Konsole.
Вот подпрограмма:
//ffmpeg -i VTS_01_1.VOB -c:v libx264 -c:a aac -strict experimental Test.mp4
ProcessBuilder builder = new ProcessBuilder("ffmpeg", "-i", filePath.getFileName().toString(),
"-c:v", "libx264", "-c:a", "aac", "-strict", "experimental", fileName + ".mp4")
.directory(filePath.getParent().toFile()).inheritIO();
Process proc = builder.start();
proc.waitFor();
System.out.println("\n\n");
builder.command().stream().forEachOrdered(string -> System.out.print(string + " "));
И полный вывод ffmpeg из окна Netbeans:
ffmpeg version 4.0 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 7 (Ubuntu 7.3.0-16ubuntu3)
configuration:
libavutil 56. 14.100 / 56. 14.100
libavcodec 58. 18.100 / 58. 18.100
libavformat 58. 12.100 / 58. 12.100
libavdevice 58. 3.100 / 58. 3.100
libavfilter 7. 16.100 / 7. 16.100
libswscale 5. 1.100 / 5. 1.100
libswresample 3. 1.100 / 3. 1.100
Guessed Channel Layout for Input Stream #0.2 : stereo
Input #0, mpeg, from 'VTS_01_1.VOB':
Duration: 00:14:44.44, start: 0.233567, bitrate: 9712 kb/s
Stream #0:0[0x1bf]: Data: dvd_nav_packet
Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m, top first), 720x480 [SAR 8:9 DAR 4:3], 8000 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, stereo, s16, 1536 kb/s
Unknown encoder 'libx264'
ffmpeg -i VTS_01_1.VOB -c:v libx264 -c:a aac -strict experimental Cod-4 1.mp4
Я на Kubuntu 18.04.01 LTS.
РЕДАКТИРОВАТЬ 0: При дальнейшемПодумайте, это может быть связано с необычной процедурой запуска, которую я делаю для Netbeans.Я был одним из первых, кто внедрил Netbeans 9 в KDE, и мне приходилось запускать его с помощью sudo, иначе он просто вообще не запускается.
Возможно, это как-то связано с этим.Я только что проверил (та же команда) + sudo и получил сообщение об ошибке, что программа узнала, что linx264 не найден.
Хотя я не могу себе представить, почему.