Raspberry pi3 Java JavaFX под управлением MediaPlayer имеет синий цвет - PullRequest
0 голосов
/ 07 марта 2019

Итак, я запускаю приведенный ниже код на моем Raspberry Pi3.который должен проигрывать видео нормально.Он отлично работает на моем компьютере.Однако, когда я запускаю этот же код на моем Raspberry Pi3, он очень медленный и сине-голубой.

import java.awt.*;
import java.io.File;
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.beans.property.DoubleProperty;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Video extends Application {

public static File movie;
public static Stage stage;
public static javafx.scene.media.MediaPlayer player;
public static boolean pp;

public static void init(String request){
    movie = new File(request);
    launch(null);
}

@Override
public void start(Stage stage)throws Exception {
    this.stage = stage;

    stage.initStyle(StageStyle.UNDECORATED);

    //Converts media to string URL
    Media media = new Media(movie.toURI().toURL().toString());
    player = new javafx.scene.media.MediaPlayer(media);
    MediaView viewer = new MediaView(player);

    //change width and height to fit video
    DoubleProperty width = viewer.fitWidthProperty();
    DoubleProperty height = viewer.fitHeightProperty();
    width.bind(Bindings.selectDouble(viewer.sceneProperty(), "width"));
    height.bind(Bindings.selectDouble(viewer.sceneProperty(), "height"));
    viewer.setPreserveRatio(true);

    player.setOnPlaying(new Runnable(){
        @Override
        public void run(){
            pp = true;
        }
    });

    player.setOnPaused(new Runnable(){
        @Override
        public void run(){
            pp = false;
        }
    });

    StackPane root = new StackPane();
    root.getChildren().add(viewer);

    //set the Scene
    Scene scenes = new Scene(root, Toolkit.getDefaultToolkit().getScreenSize().getWidth(), Toolkit.getDefaultToolkit().getScreenSize().getHeight(), Color.BLACK);
    stage.setScene(scenes);
    stage.setTitle("DarkBox");
    //stage.setFullScreen(true);
    stage.show();
    player.play();
}



public static void startVideo(String request){
    movie = new File(request);
    try{
        if(player != null){
            player.dispose();
        }
        stage.setScene(null);
        stage.toFront();

        Media media = new Media(movie.toURI().toURL().toString());
        player = new javafx.scene.media.MediaPlayer(media);
        MediaView viewer = new MediaView(player);

        //change width and height to fit video
        DoubleProperty width = viewer.fitWidthProperty();
        DoubleProperty height = viewer.fitHeightProperty();
        width.bind(Bindings.selectDouble(viewer.sceneProperty(), "width"));
        height.bind(Bindings.selectDouble(viewer.sceneProperty(), "height"));
        viewer.setPreserveRatio(true);

        player.setOnPlaying(new Runnable(){
            @Override
            public void run(){
                pp = true;
            }
        });

        player.setOnPaused(new Runnable(){
            @Override
            public void run(){
                pp = false;
            }
        });

        StackPane root = new StackPane();
        root.getChildren().add(viewer);

        //set the Scene
        Scene scenes = new Scene(root, Toolkit.getDefaultToolkit().getScreenSize().getWidth(), Toolkit.getDefaultToolkit().getScreenSize().getHeight(), Color.BLACK);
        stage.setScene(scenes);
        stage.setFullScreen(true);
        stage.show();
        player.play();
    }catch(Exception e){
        e.printStackTrace();
    }
}

public static void stopVideo(){
    if(player != null){
        player.dispose();
        player = null;
    }

    if(stage != null){
        stage.setScene(null);
        stage.toBack();
    }
}
}

JavaFX не поставляется с полной установкой raspbian, поэтому я также запустил этот скрипт SH.

https://pastebin.com/4iZGiuxQ

GStreamer также требуется для части моего кода для медиаплеера, поэтому я добавил это.

sudo apt-get install gstreamer0.10-plugins-good
sudo apt-get install gstreamer0.10-plugins-bad 

edit /etc/apt/sources.list и добавьтев конце:

deb http://ftp.uk.debian.org/debian/ wheezy main
deb-src http://ftp.uk.debian.org/debian/ wheezy main

Сохраните файл (Ctrl + O, Ctrl + X).

sudo apt-get update
sudo apt-get install gstreamer0.10-ffmpeg
sudo apt-get install gstreamer0.10-alsa
...