2012-12-03 93 views
1

如何使用Java來自動化視頻快照?自動化視頻快照

以下是我的嘗試。不幸的是,尋找命令似乎不起作用,因爲無論視頻在哪裏,[100,100]處像素的顏色都保持不變。

我需要什麼是可以創建視頻快照的應用程序(最好不需要GUI)。

import javafx.application.Application; 
import javafx.fxml.FXML; 
import javafx.scene.SnapshotParameters; 
import javafx.scene.image.WritableImage; 
import javafx.scene.media.Media; 
import javafx.scene.media.MediaPlayer; 
import javafx.scene.media.MediaView; 
import javafx.scene.paint.Color; 
import javafx.stage.Stage; 
import javafx.util.Duration; 

public class VideoController extends Application { 
private MediaPlayer media; 
int posun = 100; // milisecs 
int pocatek = 0; // milisecs 
Duration cas = new Duration(0); 

@Override 
public void start(Stage scene) throws Exception { 
    String uri = "http://download.oracle.com/otndocs/products/javafx/arth_512.flv"; 
    final Media medium = new Media(uri); 
    media = new MediaPlayer(medium); 
    final MediaView video = new MediaView(media); 
    // videoPane.getChildren().add(video); 
    media.setOnReady(new Runnable() { 

     @Override 
     public void run() { 
      media.play(); 
      for (int i = pocatek; i < (int) medium.getDuration().toMillis(); i += posun) { 
       System.out.println(i); 
       cas = new Duration(i); 
       media.seek(cas); 

       WritableImage wi = new WritableImage(1000, 1000); 
       video.snapshot(new SnapshotParameters(), wi); 

       Color c = wi.getPixelReader().getColor(100, 100); 
       System.out.println(c); 
       // video.snapshot(params, image); 
      } 
     } 
    }); 
} 

    public static void main(String[] args) { 
    launch(); 
    } 
} 

OUTPUT:

0 
0xffffffff 
... 
640000 
0xffffffff 
... 
670000 
0xffffffff 

回答

1

我不認爲這是可能的。 FX媒體API面向播放而不是數據操作,無法在屏幕上無需實際媒體的情況下輕鬆加載圖片數據。

鑑於您不想使用UI,因此FX沒有實際的工作,您可能希望通過其他工具解決您的任務,例如, ffmpeg,請參閱ffmpeg to get screenshot

+0

如果我決定允許使用的GUI,是有可能採取快照類似的方式? –