4

我已经下载了 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 文件也在 eclipse 中名为 res 的文件夹下。

当我运行此代码时,我收到以下错误:

    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)

这些错误是什么意思,我该如何解决?

4

1 回答 1

0

我们碰巧在我们的实验室中使用了完全相同的代码,它总是像一个魅力一样工作。事实上,我将您的代码复制到了我的一个 Eclipse 项目中。我从网上下载了 FLV 文件,并使用您的代码成功地将它们转换为 MOV。

我的学生经常报告与 Xuggler 一起项目设置的问题。也许您愿意将您的项目重新配置为迄今为止从未让我们失望过的 Maven。在 Maven 依赖平台相关库会自动正确添加到 Eclipse 项目中。

在 Kepler 版本中,作为 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>

依赖项:

<dependencies>
    <dependency>
        <groupId>xuggle</groupId>
        <artifactId>xuggle-xuggler</artifactId>
        <version>5.4</version>
    </dependency>
</dependencies>

如前所述,在这样的项目设置中,您的代码正在运行。供您参考,我们在 MacOS 10.9.4 和 Java 7 上进行了测试。

于 2014-09-02T11:21:49.840 回答