Невозможно выполнить команду через Java, но может запустить ее через cmd CreateProcess error = 2, система не может найти указанный файл - PullRequest
0 голосов
/ 17 марта 2019

Я не могу конвертировать мои mp3-файлы в wavs для более легкой обработки данных с помощью Java. Я могу открыть командную строку и скопировать точную строку, хранящуюся в s, когда я отлаживаю, и это правильно создаст файл wav. Код ниже. Я смог использовать ffmpeg, создавая строки таким образом, чтобы разделить несколько mp3-файлов на отдельные треки на основе трек-листа. Я переустановил Windows 10, поэтому я предполагаю, что это как-то связано с этим. Есть ли настройка, которую я должен изменить? Почему он запускается в командной строке, а не с Java?

package mp3towav;

import java.io.File;
import java.io.IOException;

public class Mp3towav {

    // mp3 folder
    public static final String MP3FOLDER = "C:\\Users\\Al\\Documents\\Sounds\\PokemonOST\\YellowOST\\MP3";

    public static void main(String[] args) throws IOException {

        // Gets the mp3 files and converts them to wav
        File mp3folder = new File(MP3FOLDER);

        String[] mp3s = mp3folder.list();

        File f;

        String s; 

        for(int i = 0; i < mp3s.length; i++) {
            f = new File(mp3s[i]);
            s = ("ffmpeg -i " + MP3FOLDER + "\\" + f.getName() + " " + (MP3FOLDER + "\\" + f.getName()).replaceAll("MP3", "WAV").replaceAll("mp3", "wav"));
            Runtime.getRuntime().exec(s);
            System.out.println("test");
        }



    }

}

Редактировать

Так что я никогда не заставлял Java использовать PATH, но добавил абсолютный путь к исполняемому файлу ffmpeg в Java.

1 Ответ

0 голосов
/ 25 марта 2019

Мне пришлось добавить полный путь к корзине, включая ffmpeg.exe, вместо того, чтобы Java полагался на переменную PATH в Windows, даже если ffmpeg правильно работает в окне CMD.

...