我已经下载了Xuggler并将Jar文件添加到Eclipse库中,我为java编写了一些代码来获取flv文件并将其转换为mov:
public class Main {
public static void main(String[] args) {
IMediaReader reader = ToolFactory.makeReader("res/input.flv");
IMediaWriter writer = ToolFactory.makeWriter("res/output.mov", reader);
reader.addListener(writer);
while(reader.readPacket() == null);
}}
我的flv文件也在一个名为res的文件夹下进行eclipse。
当我运行此代码时,我收到以下错误:
Exception in thread "main" java.lang.RuntimeException: could not open stream com.xuggle.xuggler.IStream@269225200[index:0;id:0;streamcoder:com.xuggle.xuggler.IStreamCoder@3536496[codec=com.xuggle.xuggler.ICodec@269351856[type=CODEC_TYPE_VIDEO;id=CODEC_ID_H264;name=libx264;];time base=1/15;frame rate=0/0;pixel type=YUV420P;width=235;height=217;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]: Operation not permitted
at com.xuggle.mediatool.MediaWriter.openStream(MediaWriter.java:1192)
at com.xuggle.mediatool.MediaWriter.getStream(MediaWriter.java:1052)
at com.xuggle.mediatool.MediaWriter.encodeVideo(MediaWriter.java:742)
at com.xuggle.mediatool.MediaWriter.encodeVideo(MediaWriter.java:783)
at com.xuggle.mediatool.MediaWriter.onVideoPicture(MediaWriter.java:1434)
at com.xuggle.mediatool.AMediaToolMixin.onVideoPicture(AMediaToolMixin.java:166)
at com.xuggle.mediatool.MediaReader.dispatchVideoPicture(MediaReader.java:610)
at com.xuggle.mediatool.MediaReader.decodeVideo(MediaReader.java:519)
at com.xuggle.mediatool.MediaReader.readPacket(MediaReader.java:475)
at Main.main(Main.java:12)
这些错误意味着什么,我该如何修复它们?
答案 0 :(得分:0)
我们碰巧在我们的实验室中使用完全相同的代码,它总是像魅力一样工作。事实上,我将您的代码复制到我的一个Eclipse项目中。我从网上下载了FLV文件,并使用您的代码将它们成功转换为MOV。
我的学生经常与Xuggler一起报告项目设置的问题。也许您愿意将您的项目重新配置为Maven,而迄今为止我们从未失败过。在Maven依赖项平台中,相关的库会自动正确地添加到Eclipse项目中。
截至开普勒发布时,作为Eclipse的Maven管理的M2模块是主线的一部分。这样就很容易创建一个maven项目。之后只需将以下存储库和依赖项添加到您的pom.xml中。
<强>存储库:强>
<repositories>
<repository>
<id>xuggle repo</id>
<url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url>
</repository>
</repositories>
<repositories>
<repository>
<id>xuggle repo</id>
<url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url>
</repository>
</repositories>
<强>依赖关系:强>
<dependencies>
<dependency>
<groupId>xuggle</groupId>
<artifactId>xuggle-xuggler</artifactId>
<version>5.4</version>
</dependency>
</dependencies>
如前所述,在这样的项目设置中,您的代码正在运行。作为参考,我们在MacOS 10.9.4和Java 7上进行了测试。