视频阅读器/编写器程序xuggler不工作

时间:2013-01-11 17:10:36

标签: java xuggler

我已经下载了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)

这些错误意味着什么,我该如何修复它们?

1 个答案:

答案 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上进行了测试。