Java语言程序设计——篇十五(4)

在这里插入图片描述
在这里插入图片描述

       🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿

  • 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
    您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻

在这里插入图片描述

音频和视频

  • JavaFX支持播放音频和视频媒体。它支持MP3、AIFF和WAV音频文件和FLV、MP4等视频文件。
  • JavaFX媒体功能通过javafx.scene.media包的三个类实现:
    ①Media表示媒体文件,可以是音频,也可以是视频;
    ②MediaPlayer用于播放媒体文件的播放器;
    ③ MediaView是显示媒体的节点控件。
  • 要播放一个媒体,首先通过一个URL字符串创建一个Media对象,然后再创建一个MediaPlayer对象来播放它,最后创建一个MediaView对象来显示播放器。
  • Media类的构造方法如下:
public Media(String source)
  • 属性:

duration
width
height

例:

    File path = new File("media\\高山流水.mp3");
	String source = path.toURI().toString();
    Media media = new Media(source);
  • MediaPlayer类构造方法如下:
 public MediaPlayer(Media media)
  • 通过一些属性控制媒体的播放:

autoPlay
cycleCount
volume
balance

  • 下面方法可以控制媒体的播放:
 public void play()
 public void pause()
 public void stop()
 public void seek(Duration seekTime)
  • MediaView类为媒体播放器提供一个视图,主要负责特效与变换。
 public MediaView()
 public MediaView(MediaPlayer mediaPlayer)
  • MediaView类提供了一些属性用于控制媒体:
 x,y属性指定媒体视图的当前x、y坐标,
 mediaPlayer是为媒体视图指定的媒体播放器,
fitWidth和fitHeight分别为媒体指定合适的宽度和高度。

音频实战演练

问题描述:
实现一个简单音频播放器。程序开始运行首先创建一个MediaPlayer对象。当单击“播放”按钮开始播放、单击“暂停”按钮暂停播放等。

import javax.sound.sampled.*;  
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.io.File;  
import java.io.IOException;  
  
public class SimpleAudioPlayer extends JFrame {  
    private Clip clip;  
    private boolean isPlaying = false;  
  
    public SimpleAudioPlayer() {  
        // 设置窗口属性  
        setTitle("Simple Audio Player");  
        setSize(300, 200);  
        setLocationRelativeTo(null); // 居中显示  
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
        // 创建播放和暂停按钮  
        JButton playButton = new JButton("播放");  
        JButton pauseButton = new JButton("暂停");  
  
        // 加载音频文件  
        try {  
            File audioFile = new File("music.wav");  
            AudioInputStream audioStream = AudioSystem.getAudioInputStream(audioFile);  
            clip = AudioSystem.getClip();  
            clip.open(audioStream);  
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException e) {  
            e.printStackTrace();  
        }  
  
        // 为按钮添加事件监听器  
        playButton.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                if (!isPlaying) {  
                    clip.start();  
                    isPlaying = true;  
                    playButton.setEnabled(false);  
                    pauseButton.setEnabled(true);  
                }  
            }  
        });  
  
        pauseButton.addActionListener(new ActionListener() {  
            @Override  
            public void actionPerformed(ActionEvent e) {  
                if (isPlaying) {  
                    clip.stop();  
                    isPlaying = false;  
                    playButton.setEnabled(true);  
                    pauseButton.setEnabled(false);  
                }  
            }  
        });  
  
        // 添加按钮到窗口  
        JPanel panel = new JPanel();  
        panel.add(playButton);  
        panel.add(pauseButton);  
  
        add(panel, BorderLayout.CENTER);  
    }  
  
    public static void main(String[] args) {  
        SwingUtilities.invokeLater(() -> {  
            SimpleAudioPlayer player = new SimpleAudioPlayer();  
            player.setVisible(true);  
        });  
    }  
}

视频实战演练

问题描述:
编程实现视频的播放。该程序可以通过播放/暂停按钮来播放/暂停视频,使用重播按钮来重新播放视频,使用滑动条来控制音量。

import javafx.application.Application;  
import javafx.scene.Scene;  
import javafx.scene.control.Button;  
import javafx.scene.control.Slider;  
import javafx.scene.layout.HBox;  
import javafx.scene.layout.StackPane;  
import javafx.scene.layout.VBox;  
import javafx.scene.media.Media;  
import javafx.scene.media.MediaPlayer;  
import javafx.scene.media.MediaView;  
import javafx.stage.Stage;  
  
public class VideoPlayerApp extends Application {  
  
    private MediaPlayer mediaPlayer;  
    private Media media;  
  
    @Override  
    public void start(Stage primaryStage) throws Exception {  
        // 设置视频文件路径  
        String mediaUrl = "file:///path/to/your/video.mp4"; // 注意文件路径需要是有效的  
        media = new Media(mediaUrl);  
        mediaPlayer = new MediaPlayer(media);  
  
        // 创建MediaView来显示视频  
        MediaView mediaView = new MediaView(mediaPlayer);  
  
        // 创建控制按钮  
        Button playPauseButton = new Button("Play");  
        playPauseButton.setOnAction(e -> {  
            if (mediaPlayer.getStatus() == MediaPlayer.Status.PLAYING) {  
                mediaPlayer.pause();  
                playPauseButton.setText("Play");  
            } else {  
                mediaPlayer.play();  
                playPauseButton.setText("Pause");  
            }  
        });  
  
        Button replayButton = new Button("Replay");  
        replayButton.setOnAction(e -> {  
            mediaPlayer.stop();  
            mediaPlayer.seek(media.getDuration().divide(2)); // 或者设置为0来从头开始  
            mediaPlayer.play();  
            playPauseButton.setText("Pause");  
        });  
  
        Slider volumeSlider = new Slider(0, 1, 1); // 音量控制,范围0到1  
        volumeSlider.valueProperty().addListener((obs, oldValue, newValue) -> {  
            mediaPlayer.setVolume(newValue.doubleValue());  
        });  
  
        // 布局  
        VBox vbox = new VBox(20, playPauseButton, replayButton, volumeSlider, mediaView);  
        vbox.setPadding(new javafx.geometry.Insets(10));  
  
        Scene scene = new Scene(vbox, 640, 480);  
  
        primaryStage.setTitle("Video Player with JavaFX");  
        primaryStage.setScene(scene);  
        primaryStage.show();  
  
        // 自动播放视频  
        mediaPlayer.play();  
    }  
  
    public static void main(String[] args) {  
        launch(args);  
    }  
}

博主用心写,读者点关注,互动传真情,知识不迷路。

  • 82
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 53
    评论
评论 53
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

倾听一世,繁花盛开

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

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

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

打赏作者

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

抵扣说明:

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

余额充值