发布网友 发布时间:2022-04-14 02:57
共1个回答
热心网友 时间:2022-04-14 04:26
因为MediaPlayer状态(值)不一样,
当MediaPlayer.Status处于UNKNOWN 时(刚刚创建时的状态),
那么获取结束时间结果也是UNKNOWN.
代码片段一:
Media md=new Media(this.getClass().getResource("a.mp4").toString());
MediaPlayer mp=new MediaPlayer(md);
MediaView mv=new MediaView(mp);
mp.setAutoPlay(true);
System.out.println("创建后的状态"+mp.getStatus());//UNKOWN
System.out.println(mp.getStopTime());
代码片段二: 设置了开始时刻,和结束时刻
Media md=new Media(this.getClass().getResource("a.mp4").toString());
MediaPlayer mp=new MediaPlayer(md);
MediaView mv=new MediaView(mp);
mp.setAutoPlay(true);
mp.setStartTime(Duration.seconds(5));//5秒的位置开始
mp.setStopTime(Duration.seconds(10));//10秒的位置结束
System.out.println(mp.getStatus());// 打印MediaPlayer的状态
System.out.println(mp.getStopTime());// 结束的时刻 10毫秒处结束
System.out.println(mp.getTotalDuration());//总播放时间 结束时刻-开始时刻=总播放时间
完整的代码 如下
/////////////////////////////////////////////////////////////////////////////////
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.media.*;
import javafx.stage.Stage;
public class MediaViewDemo extends Application{
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root=new BorderPane();
Media md=new Media(this.getClass().getResource("a.mp4").toString());
MediaPlayer mp=new MediaPlayer(md);
MediaView mv=new MediaView(mp);
mp.setAutoPlay(true);
System.out.println("创建后的状态"+mp.getStatus());
root.setCenter(mv);
Scene scene=new Scene(root, 300, 200);
primaryStage.setScene(scene);
primaryStage.setTitle("视频播放");
primaryStage.show();
//添加一个鼠标点击后的事件处理
mv.setOnMouseClicked(e->{
//如果视频处于播放状态. 那么点击后就暂停
if(mp.getStatus()==MediaPlayer.Status.PLAYING) {
mp.pause();
}else{//其余状态,试图播放视频
mp.play();
}
});
// 状态改变时,输出最新的状态
mp.statusProperty().addListener((ob,oldValue,newValue)->{
System.out.println("状态:"+newValue);
});
}
}