【发布时间】:2020-02-26 18:02:03
【问题描述】:
这是 javafx 中的视频播放器。我们如何支持 mkv、vob、avi 等扩展? 这可以在 javafx 中使用 gstreamer 来支持其他扩展吗? 我们如何使用 gstreamer 或者如果没有那么请说任何其他方式来使视频播放器支持其他扩展...
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class MoviePlayer extends Application {
/**
*
*/
public static void main(String args[])
{
launch(args);
}
@Override
public void start(Stage arg0) throws Exception {
final Stage stage=new Stage();
stage.setTitle("Video Player");
Group root = new Group();
Media media = new Media("file:///C:/Users/vi/downloads/Video/a.mp4");
final MediaPlayer player=new MediaPlayer(media);
MediaView view=new MediaView(player);
// System.out.println("media.Width"+media.getWidth());
final VBox vbox=new VBox();
Slider slider=new Slider();
root.getChildren().add(view);
root.getChildren().add(vbox);
root.getChildren().add(slider);
Scene scene=new Scene(root, 400,400,Color.BLACK);
stage.setScene(scene);
stage.show();
player.play();
player.setOnReady(new Runnable() {
@Override
public void run() {
int w=player.getMedia().getWidth();
int h=player.getMedia().getHeight();
stage.setMinWidth(w);
stage.setMinHeight(h);
vbox.setMinSize(w,100 );
vbox.setTranslateY(h);
}
});
}
}
【问题讨论】:
-
JavaFX 中的媒体播放功能并不打算由框架的用户扩展。如果您愿意自己构建 JavaFX,可以查看this article。 IMO,更现实的解决方案是完全使用另一个媒体播放库,例如 vlcj,它已经支持多种媒体格式(但它不会像 JavaFX 的 MediaPlayer 那样易于使用)。
标签: javafx-8