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

news2024/11/29 10:38:59

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

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

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

在这里插入图片描述

音频和视频

  • 音频和视频
      • 音频实战演练
      • 视频实战演练

音频和视频

  • 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);  
    }  
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2059963.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亦菲喊你来学习之机器学习(7)--逻辑回归内下采样

文章目录 下采样优缺点下采样步骤总结 下采样 在逻辑回归中,下采样是一种处理数据不平衡问题的方法,特别是在处理二分类问题时,如果某一类的样本数量远多于另一类,就可能导致模型偏向于多数类,从而忽略了少数类的特征…

基于推荐算法的景点攻略网站的设计与实现---附源码130855

摘 要 21世纪时信息化的时代,几乎任何一个行业都离不开计算机,将计算机运用于旅游景点分享也是十分常见的。过去使用传统广告方式对旅游景点进行推荐分享,造成了流程繁琐、难以维护,难于进准推荐给适合需求的人群等问题&#xff0…

java15-网络编程

一 网络编程概述 1.1 网络编程简介 其实,所谓的网络编程,就是编写程序,实现让同一个网络中的机器实现数据的传递,实现通信。 Java是 Internet 的语言,它从语言级上提供了对网络应用程序的支持。 Java提供的网络类库&a…

注册Github账号详细过程

目录 一、准备工作 二、注册步骤 一、准备工作 在注册GitHub账号之前,请确保您已经准备好以下信息: 一个有效的电子邮箱地址:用于接收验证邮件和GitHub的后续通知。 用户名:确保该用户名在GitHub上是唯一的,且符合…

如何选择合适的端口管控软件

一、明确需求 管控的端口类型:首先确定需要管控的端口类型是USB端口,还是需要同时管控串口、并口等其他类型的端口。 管控的力度:确定是需要对所有端口进行统一管控,还是需要根据不同的用户或部门实施不同的策略。 日志记录需求…

图神经网络教程1-综述

目录 前言 介绍 贡献 分类 预备知识 学习方式 转导式学习 归纳学习 系列文章列表 前言 翻译自A Practical Tutorial on Graph Neural Networks,并给出详细的解释和注意事项以及个人的思考,原作者如下: 介绍 当代人工智能(AI)&#x…

最佳实践:CI/CD交付模式下的运维展望丨IDCF

李洪锋 启迪万众数字技术(广州)有限公司 ,产品研发中心-系统运维部、研发效能(DevOps)工程师(中级)课程学员 一、DevOps现状 据云计算产业联盟《中国DevOps现状调查报告2023》显示,国内DevOps 落地成熟度…

JUC阻塞队列(四):DelayQueue

1、DelayQueue介绍 DelayQueue 是一个延迟队列,生产者写入一个数据,这个数据具有被直接消费的延迟时间, 让数据具有延迟的特性。 DelayQueue底层也是基于二叉堆来实现的,DelayQueue本就是基于PriorityBQueue 实现的。 二叉堆结构每…

NCL画出来的图模糊问题处理

问题介绍: 如图所示,NCL画出来的图分辨率比较低,图片比较模糊,怎么将分辨率提高? 解决方法: ; 采用这个方法来定义wkswks_type "png"wks_typewkWidth 2500wks_typewkHeight 2500wks gsn_…

网易、网易互娱、360、头条、商汤等公司面试真题....

测试岗/测试开发岗面试真题 来源与网易、网易互娱、360、头条、商汤等公司面试真题 自我介绍 项目中负责什么? 团队几个人?合作情况 为什么要读研 项目/实习介绍 项目中负责什么? 团队几个人?合作情况 项目的方法怎么改进,和别人方…

微信为什么会限制加好友?

微信限制加好友主要是为了防止垃圾信息和滥用行为,包括以下几个原因: 1、防止骚扰:限制加好友可以减少陌生人骚扰和垃圾广告。 2、保护用户隐私:控制好友请求能更好地保护用户的个人信息。 3、提升用户体验:避免用户…

用博达网站群管理平台设计网站时如何创建二级导航

1 介绍 现用博达网站群管理平台设计出的网站只能一级导航,亦即点击首页的顶端导航,直接出现列表页,无法出现二级菜单。二级菜单在网站开发中被称为二级导航。 怎样用博达网站群管理平台制作出二级导航的效果?这个问题在《网站群…

掌握电子邮件的艺术:使用 Mailbird 统一管理您的数字生活

在数字时代,电子邮件已成为我们沟通的骨干。无论是商务交流、家庭联络,还是订阅更新,我们几乎每天都在使用电子邮件。但随着账户数量的增加,管理这些账户变得日益复杂。如何有效地整合和优化您的电子邮件体验?Mailbird…

Arduino调试ESP32常见问题 exit status 1

问题1:代码上传(烧录)报Failed uploading: uploading error: exit status 1大概率原因:没有安装对应的驱动,我的ESP32驱动是CH340点击这里下载CH340 下载后打开,若出现乱码不用在意,点击第一个按…

原生js实现下滑到当前模块进度条填充

<div style"height: 1500px;"></div> <div class"progress-container"><div class"progress-bar" data-progress"90%"><p class"progress-text">Google Ads在Google搜索引擎上覆盖超过90%的互…

浙江大学蒋超实验室在JHM发文揭示日常使用量的一次性纸杯释放的微塑料或可能影响孕期健康

CQ师姐做的一个纸杯微塑料项目&#xff0c;非常有意思&#xff0c;揭示了日常生活中真实来源的孕期微塑料暴露&#xff0c;对生殖和代谢性能的影响和调控机制。我参与了其中的部分实验和分析&#xff0c;学习了养小鼠&#xff0c;灌胃&#xff0c;解剖和部分塑料的定性定量等实…

二、Socket链接方式分类

一、Socket通信基本流程图 1、流程图 2、链接方式 &#xff08;1&#xff09;同步 商业中不会用&#xff0c;会有阻塞的情况出现&#xff1b;举例&#xff1a; 客户端的玩家升级&#xff0c;向服务器发送这条信息&#xff0c;而服务器传输回来需要一定时间&#xff0c;此时…

探索《黑神话:悟空》品质保障的背后:ISO体系认证

《黑神话&#xff1a;悟空》横空出世 8月20日上午10点&#xff0c;国产首款大型3A游戏《黑神话&#xff1a;悟空》正式上线。游戏一经上线便吸引了无数国内外用户的关注&#xff0c;不仅仅是因为其高超的游戏制作技术&#xff0c;极高的画面精度&#xff0c;精良的的视觉和战斗…

如何将平淡无奇的产品推向市场?借助ChatGPT,仅需3秒即可化身短视频创意策划大师,助你的产品一夜成名!

本文通过一系列生动的实例&#xff0c;展示了如何通过ChatGPT生成创意和独特的宣传方式&#xff0c;将平凡或不起眼的产品转化为市场上的明星。从全红婵最爱的小乌龟到棋牌室排烟机&#xff0c;再到食物研磨器的成功案例&#xff0c;我们可以看到&#xff0c;创意和创新的宣传策…

手把手教你如何注册使用Runway Gen3,10秒搞定专业级视频制作

大家好&#xff01;我是YUAN。 今天&#xff0c;我们要介绍的是一款AI视频制作的王者级工具——Runway Gen-3。它不仅能够在短时间内生成高质量的视频&#xff0c;还能满足不同风格和场景的需求。 一、Runway Gen-3是什么&#xff1f; Runway Gen-3是一款功能强大的AI视频生…