:
🌿🌿🌿跟随博主脚步,从这里开始→博主主页🌿🌿🌿
- 欢迎大家:这里是我的学习笔记、总结知识的地方,喜欢的话请三连,有问题可以私信🌳🌳🌳
您的点赞👍、关注➕、收藏⭐️、评论📝、私信📧是我最大的支持与鼓舞!!!🌻🌻🌻
音频和视频
- 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);
}
}
博主用心写,读者点关注,互动传真情,知识不迷路。