Преобразование MP3 в видео формат с помощью JAVE

Я пытаюсь преобразовать аудио (mp3) файл в видеофайл (в идеале flv или что-нибудь, что примет youtube). Оглядываясь здесь, я подумал, что JAVE мог бы справиться с работой и поиграть с ней, но большая часть поддержки заключается в извлечении аудио из видео, а не наоборот. Я догадывался, что мне может понадобиться чистое изображение или что-то еще, чтобы сформировать часть видео в картинках, но, похоже, мне это не удается. Спасибо за любую помощь!

Мой текущий код выглядит так:

        File source = new File("voicetomstest.mp3");
        File target = new File("target.flv");
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libmp3lame");
        audio.setBitRate(new Integer(64000));
        audio.setChannels(new Integer(1));
        audio.setSamplingRate(new Integer(22050));
        VideoAttributes video = new VideoAttributes();
        video.setCodec("flv");
        video.setBitRate(new Integer(160000));
        video.setFrameRate(new Integer(15));
        video.setSize(new VideoSize(400, 300));
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("flv");
        attrs.setAudioAttributes(audio);
        attrs.setVideoAttributes(video);
        Encoder encoder = new Encoder();
        encoder.encode(source, target, attrs);

И в настоящее время имеет следующую ошибку

Apr 01, 2018 3:13:34 PM testvoice2video.TestVoice2Video main
SEVERE: null
it.sauronsoftware.jave.InputFormatException
at it.sauronsoftware.jave.Encoder.parseMultimediaInfo(Encoder.java:659)
at it.sauronsoftware.jave.Encoder.encode(Encoder.java:840)
at it.sauronsoftware.jave.Encoder.encode(Encoder.java:713)
at testvoice2video.TestVoice2Video.main(TestVoice2Video.java:74)

где строка 74 - это "encoder.encode(source, target, attrs)";

1 ответ

Я не работаю с этим кодом, но мне кажется, что из исходного кода Encoder.parseMultiMediaInfo() видно, что исключение InputFormatException, выброшенное в строке 659, является результатом неспособности создать файл MultimediaInfo из вашей цели. Он ищет это регулярное выражение в начале цели:

^\\s*Input #0, (\\w+).+$\\s*"

Целевой файл открывается как исполняемый файл ffmpeg, куда затем добавляются различные аргументы в соответствии с вашими атрибутами. Я не знаю, какой аргумент ffmpeg приводит к заголовку типа "Input #0", но я должен предположить, что это

...
ffmpeg.addArgument("-i");
ffmpeg.addArgument(source.getAbsolutePath());
...

Вы уверены, что ваш исходный файл был найден?

Другие вопросы по тегам