0

我正在尝试将音频(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);”

4

1 回答 1

0

我不使用此代码,但在查看 Encoder.parseMultiMediaInfo() 源代码时,我认为第 659 行引发的 InputFormatException 是由于无法从您的目标创建 MultimediaInfo 文件的结果。它在目标的开头寻找这个正则表达式:

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

目标文件作为 ffmpeg 可执行文件打开,然后根据您的属性添加各种参数。我不知道什么 ffmpeg 参数会导致“Input #0”类型的标题,但我必须假设它是

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

你确定你的源文件被找到了吗?

于 2018-04-02T16:09:15.317 回答