JavaFX 播放音频和视频

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.util.Duration;

import java.io.File;

/**
 * @Author: ZhangHao
 * @Description: 音频、视频播放Demo
 * @Date: 2020/5/14 21:46
 * @Version: 1.0
 */
public class MediaDemo extends Application{

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage){
        // 音频或视频的路径
        // 举例中的路径为工程根目录下的test.mp4
        // 如果不能正常播放,则音频或视频文件可能损坏;或者有版权,需对应的播放器正常播放;或者录屏后重新尝试,避过版权问题
        String url = new File(System.getProperty("user.dir") + "/test.mp4").getAbsoluteFile().toURI().toString();
        Media media = new Media(url);
        MediaPlayer mediaPlayer = new MediaPlayer(media);
        // 设置音量:0.0 - 1.0
        mediaPlayer.setVolume(0.5);
        // 设置开始时间
        mediaPlayer.setStartTime(Duration.seconds(1));
        MediaView mView = new MediaView(mediaPlayer);
        System.out.println(media.getSource());

        VBox vBox = new VBox(3);
        vBox.getChildren().add(mView);
        vBox.setPrefWidth(580);
        vBox.setPrefHeight(360);
        mView.setFitWidth(vBox.getPrefWidth());
        mView.setFitHeight(vBox.getPrefHeight() - 40);

        int fontSize = 16;

        ToggleGroup toggleGroup = new ToggleGroup();

        ToggleButton playButton = new ToggleButton("播放");
        playButton.setFont(new Font(fontSize));
        playButton.setOnMouseClicked(event -> mediaPlayer.play());
        playButton.setToggleGroup(toggleGroup);

        ToggleButton suspendButton = new ToggleButton("暂停");
        suspendButton.setFont(new Font(fontSize));
        suspendButton.setOnMouseClicked(event -> mediaPlayer.pause());
        suspendButton.setToggleGroup(toggleGroup);

        ToggleButton continueButton = new ToggleButton("继续");
        continueButton.setFont(new Font(fontSize));
        continueButton.setOnMouseClicked(event -> mediaPlayer.play());
        continueButton.setToggleGroup(toggleGroup);

        ToggleButton closeButton = new ToggleButton("结束");
        closeButton.setFont(new Font(fontSize));
        closeButton.setOnMouseClicked(event -> mediaPlayer.stop());
        closeButton.setToggleGroup(toggleGroup);

        HBox hBox = new HBox(3);
        hBox.getChildren().addAll(playButton, suspendButton, continueButton, closeButton);
        vBox.getChildren().add(hBox);

        Scene scene = new Scene(vBox,580,360);
        primaryStage.setTitle("MediaDemo");
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

 

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaFX是一款用于创建富客户端应用程序的框架,其中包括了一个内置的媒体播放器。JavaFX MediaPlayer可以用于在JavaFX应用程序中播放各种媒体文件,如音频视频等。 为了创建一个JavaFX视频播放器,你需要按照以下步骤: 1. 导入JavaFX库并配置环境; 2. 创建一个Media对象,该对象代表要播放视频; 3. 创建一个MediaPlayer对象,并将Media对象传递给它; 4. 将MediaPlayer对象与一个JavaFX界面上的MediaView组件关联; 5. 提供用户控制媒体播放的功能,如播放、暂停、快进/快退等。 以下是示例代码,可以帮助你更好地理解JavaFX视频播放器的实现方式: ``` import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.StackPane; import javafx.scene.media.Media; import javafx.scene.media.MediaPlayer; import javafx.scene.media.MediaView; import javafx.stage.Stage; public class VideoPlayer extends Application { private static final String MEDIA_URL = "http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv"; @Override public void start(Stage primaryStage) throws Exception { Media media = new Media(MEDIA_URL); MediaPlayer mediaPlayer = new MediaPlayer(media); MediaView mediaView = new MediaView(mediaPlayer); StackPane root = new StackPane(); root.getChildren().add(mediaView); Scene scene = new Scene(root, 640, 360); primaryStage.setScene(scene); primaryStage.show(); mediaPlayer.play(); } public static void main(String[] args) { launch(args); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风铃峰顶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值