Итак, я запускаю приведенный ниже код на моем 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