Преобразование 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());
...
Вы уверены, что ваш исходный файл был найден?