私はビデオを表示するためのlibとして処理(3.0.2)を使用しようとしています。下の私のメインクラスの始まりを見ることができます。私はMavenを使ってコマンドラインで実行するfat .jarをビルドしています。プログラムは実行され、フリーズせず、終了することができますが、ビデオはありません...(下のスクリーンショット)問題は完全に静かに起こります。警告もクラッシュもありません。スタンドアロンプログラムの処理に関するサイレント実行のバグ
ビデオファイルを削除すると、ビデオファイルが削除されるため、ビデオファイルが見つかったと確信しています(RuntimeException
)。
編集:いいえ、ファイルは見つかりましたが、フレームは見つかりませんでした。プログラムが非ゼロのフレームを見つけようとしています。
編集2:実際にはGStreamerの問題です。明らかに、ProcessingはGStreamer 1.x系統をサポートしていません。説明したGStreamer 0.1xをhereとhereのようにインストールすると、残念ながら私のためにはうまくいきませんでした。
編集3:(下記のコード)の基本的な例をしようと、私はdraw()
方法であるがMovie.read()
方法は、トリガされないことを見ます。それでもエラーや警告はないので、ライブラリの問題だと思います。 興味深いことに、この非常に同じコードは、処理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")、処理IDEを介してインストールされたビデオ・ライブラリーを含む処理3.0.2。
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!");
}
}
は動作が期待されているように見える次のように
Movie.available()
を使用すると、それを解決しましたその代わりにビデオ(少なくともコードはこのように見える)を表示します。 – Tom@Tomこれは、インターレースのために大きなスナップショットを1つ表示し、4つの小さな「スクリーン」がインターレース解除されたフレームを表示するためです。 – Raoul