1

Javaを使用してビデオスナップショットを自動化するにはどうすればよいですか?

以下は私の試みです。残念ながら、[100,100]のピクセルの色は、ビデオがどこにあっても同じままであるため、seekコマンドは機能しないようです。

必要なのは、ビデオのスナップショットを作成するアプリです(できれば、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();
    }
}

出力:

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

3 に答える 3

1

ありえないと思います。FX メディア API は、データ操作ではなく再生を目的としているため、実際のメディアが画面に表示されていないと、画像データを簡単に読み込むことはできません。

UIが必要ない場合、FXの実際の作業はなく、他のツールでタスクを解決したい場合があります。たとえば、 ffmpegをffmpeg参照してスクリーンショットを取得してください。

于 2012-12-03T21:22:27.243 に答える
0

このタスクにJAVAFXを使用することはお勧めしません。はるかに優れた解決策は、XUGGLERを使用することです。正確なケースは、このチュートリアルで説明されています。

http://www.javacodegeeks.com/2011/02/xuggler-tutorial-frames-capture-video.html

于 2012-12-25T21:14:17.760 に答える