FFMPEG может найти libx264 в Konsole, но не в программе? - PullRequest
0 голосов
/ 27 января 2019

Я пишу небольшую программу для работы с большой библиотекой видео, которая недавно была неправильно помечена и в неправильном формате.

Я использую 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 не найден.

Хотя я не могу себе представить, почему.

...