处理独立程序的静默执行错误

时间:2016-04-22 06:18:49

标签: processing

我一直在尝试使用处理(3.0.2)作为lib来显示视频。你可以在下面看到我的主要课程的开头。我正在使用Maven构建一个我在命令行上运行的胖.jar。该程序运行,不冻结,可以关闭,但没有视频...(截图如下)问题是完全默默地发生:没有警告,没有崩溃。

我完全相信程序会找到视频文件,因为删除它会触发RuntimeException

编辑:确定,找到文件,但不是帧。该程序因试图找到非零帧而陷入困境。

编辑2:看来它实际上是一个GStreamer问题。显然,Processing不支持GStreamer 1.x血统。不幸的是,按照herehere的说明安装GStreamer 0.1x对我来说不起作用。

编辑3:尝试使用基本示例(下面的代码),我发现虽然Movie.read()方法是draw()方法,但永远不会触发import processing.core.PApplet; import processing.video.*; public class TestMovie extends PApplet{ Movie myMovie; public static void main(String[] args){ PApplet.main(TestMovie.class.getName()); } public void settings(){ size(720, 480, FX2D); } public void setup() { //background(0); try{ myMovie = new Movie(this, "red_45deg_284sec_500ml.mpg"); }catch(Exception e){ System.out.println(e.getMessage()); } myMovie.loop(); } public void draw() { image(myMovie.get(), 0, 0); System.out.println("I'm drawing!"); } // Called every time a new frame is available to read void movieEvent(Movie m) { try{ m.read(); }catch(Exception e){ System.out.println(e.getMessage()); } System.out.println("new frame!"); } } 方法。由于仍然没有错误或警告,我想这是一个库问题。 有趣的是,这个完全相同的代码在处理IDE中作为.pde执行时效果很好,因此必须有一个我缺乏的库。任何想法?

我的依赖项:

  • core.jar添加
  • video.jar
  • jna.jar
  • gstreamer的-java.jar

系统:Ubuntu 14.04 LTS,Java HotSpot(TM)64位服务器VM(java版本" 1.8.0_77"),处理3.0.2,通过处理IDE安装视频库。

SELECT *

1 个答案:

答案 0 :(得分:0)

所以,我终于让电影播放了,毕竟它似乎不是一个库问题......出于某种神秘的原因,movieEvent()没有执行,很可能是因为没有触发任何事件。使用Movie.available()解决了它如下:

public class TestMovie extends PApplet{

    Movie myMovie;

    public static void main(String[] args){
        PApplet.main(TestMovie.class.getName());
    }

    public void settings(){
        size(720, 480, FX2D);
    }

    public void setup() {
      //background(0);
        try{
            myMovie = new Movie(this, "red_45deg_284sec_500ml.mpg");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
        myMovie.loop();
    }

    public void draw() {
        if (myMovie.available()) {
            myMovie.read();
          }
          image(myMovie, 0, 0);
    }
}