我一直在尝试使用处理(3.0.2)作为lib来显示视频。你可以在下面看到我的主要课程的开头。我正在使用Maven构建一个我在命令行上运行的胖.jar。该程序运行,不冻结,可以关闭,但没有视频...(截图如下)问题是完全默默地发生:没有警告,没有崩溃。
我完全相信程序会找到视频文件,因为删除它会触发RuntimeException
。
编辑:确定,找到文件,但不是帧。该程序因试图找到非零帧而陷入困境。
编辑2:看来它实际上是一个GStreamer问题。显然,Processing不支持GStreamer 1.x血统。不幸的是,按照here和here的说明安装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执行时效果很好,因此必须有一个我缺乏的库。任何想法?
我的依赖项:
系统:Ubuntu 14.04 LTS,Java HotSpot(TM)64位服务器VM(java版本" 1.8.0_77"),处理3.0.2,通过处理IDE安装视频库。
SELECT *
答案 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);
}
}