2016-12-14 243 views
1

我想将.webm转换为.mp4。有哪些库可以在Java中执行?还是其他什么?总之,我实际上正在开发一个应用程序,它可以从YouTube或Vimeo视频中提取声音(使用lib vget)。将.webm转换为.mp4

问题是返回,我得到一个编码为.webm的文件。

+2

嘿维克多,我看到一些人投票决定关闭你的问题,因为他们认为你的这是关于堆栈溢出题外话,因为你问的图书馆的建议。我认为他们错了。但为了避免这种情况,您可以简单地问一下如何在Java中解决这个问题,而不用提到库。 – Lii

+0

我收回**重新开放**投票。当你编写一个真正的**编程**/**技术**问题时,它会很好。例如,在YouTube上,视频的音频部分(mp3或m4a)的直接链接可以在页面的源代码中找到(在特定的文本提取和清理其html实体之后...等)。另外考虑使用一些FFmpeg可执行文件作为外部'Process'来实现格式转换。 –

回答

2

你可以看看JAVEDownload

的JAVE(Java的音频视频编码器)图书馆在 项目ffmpeg的Java包装。开发者可以利用JAVE将 的音频和视频文件从一种格式转码为另一种格式。在示例 中,您可以将AVI文件转码为MPEG格式,您可以将DivX 视频流转换为(youtube like)Flash FLV格式,也可以将 WAV音频文件转换为MP3格式或Ogg Vorbis格式,可以分离和编码音频和视频轨道,您可以调整视频大小,更改 其大小和比例等。 JAVE支持许多其他格式,容器 和操作。

虽然我没有使用它的.webm我相信有一个解决方法使用此库。它几乎支持一切。


例子和教程here

实例转换AVI到一个类似YouTube的FLV电影,带有嵌入式MP3音频流:

File source = new File("source.avi"); 
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);