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

标签 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 文件也在 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)

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

最佳答案

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

我的学生经常报告与 Xuggler 一起使用的项目设置问题。也许您愿意将您的项目重新配置为 Maven,到目前为止我们从未失败过。在Maven dependencies平台相关库自动正确添加到Eclipse项目中。

自 Kepler 发布以来,作为 Eclipse 的 Maven 管理的 M2 模块是主线的一部分。这样创建maven项目应该很容易。之后只需将以下存储库和依赖项添加到您的 pom.xml。

存储库:

<pre><code><repositories> <repository> <id>xuggle repo</id> <url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url> </repository> </repositories> </code></pre>

依赖关系:

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

如前所述,在这样的项目设置中,您的代码可以正常工作。我们在 MacOS 10.9.4 和 Java 7 上进行了测试,供您引用。

关于java - 视频阅读器/编写器程序 xuggler 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14283172/

相关文章:

java - Xuggler MediaWriter 操作不允许问题

java - 使用 Netbeans 的 Xuggler NoClassDefFoundError

java - 如何强制 CDI/Weld 使用 new 关键字?

Java接口(interface)问题

java - 使用Java加密/解密pdf文件

java - Java如何通过编程将图片编码成视频文件?

java - 使用jetty启用WebApplicationInitializer实现

java - 流列表、映射和设置为新列表

java - 如何合并一个音频和视频文件 -- Xuggler

java - 使用 Xuggler 解码大型音频文件