JavaFX 媒体

2024 年 8 月 29 日 | 阅读 6 分钟

现代世界丰富的互联网应用程序必须能够在需要时播放和编辑媒体文件。 JavaFX提供了丰富的媒体API,可以根据用户的需求播放音频和视频。

JavaFX Media API 使用户能够将音频和视频合并到丰富的互联网应用程序(RIA)中。 JavaFX媒体API可以将媒体内容分发到不同范围的设备,如电视,手机,平板电脑等。

在本教程的这一部分中,我们将讨论JavaFX以交互方式处理媒体文件的能力。 为此,JavaFX提供了包含所有必要类的包javafx.scene.mediajavafx.scene.media包含以下类。

  1. javafx.scene.media.Media
  2. javafx.scene.media.MediaPlayer
  3. javafx.scene.media.MediaStatus
  4. javafx.scene.media.MediaView

媒体事件

JavaFX团队已将媒体API设计为事件驱动的。 与媒体功能关联的回调行为用于处理媒体事件。 您无需通过EventHandler键入按钮的代码,而是实现响应媒体播放器的OnXXXX事件触发的代码,其中XXXX是事件名称。

java.lang.Runnable函数式接口用作遇到事件时调用的回调。 在javafx中播放媒体内容时,我们将创建Lambda表达式(java.lang.Runnable接口)以设置在onReady事件上。 考虑以下示例。

playMusic变量分配给lambda表达式。 这会传递到媒体播放器的setOnReady()方法中。 遇到onReady事件时,将调用Lambda表达式。

下表讨论了可能的媒体和媒体播放器事件。

Class设置On方法描述
媒体setOnError()发生错误时调用此方法。 它是Media类的一部分。
MediaPlayersetOnEndOfMedia()当达到媒体播放的结尾时,将调用该方法。
MediaPlayersetOnError()发生错误时调用此方法。
MediaPlayersetOnHalted()当媒体状态更改为停止时,将调用此方法。
MediaPlayersetOnMarker()触发Marker事件时,将调用此方法。
MediaPlayersetOnPaused()发生暂停事件时,将调用此方法。
MediaPlayersetOnPlaying()发生播放事件时,将调用此方法。
MediaPlayersetOnReady()当媒体处于就绪状态时,将调用此方法。
MediaPlayersetOnRepeat()设置repeat属性时,将调用此方法。
MediaPlayersetOnStalled()当媒体播放器停止时,将调用此方法。
MediaPlayersetOnStopped()当媒体播放器停止时,将调用此方法。
MediaViewsetOnError()当媒体视图中发生错误时,将调用此方法。

我们必须注意到,MediaPlayer类包含最多数量的触发事件,而MediaView和Media类各自包含一个事件。

javafx.scene.media.Media类

该类的属性在下表中描述。 除了onError之外,所有属性都是只读的。

属性描述
duration源媒体的持续时间(以秒为单位)。 此属性是Duration类的对象类型。
错误发生错误时,此属性设置为媒体异常值。 此属性是MediaException类的对象类型。
高度源媒体的高度(以像素为单位)。 这是一个整数类型属性。
onError发生错误时调用的事件处理程序。 方法setOnError()用于设置此属性。
宽度源媒体的宽度(以像素为单位)。 这是一个整数类型属性

构造函数

表中只有一个构造函数。

public Media(java.lang.String source): 它使用指定的源文件实例化Media类。

JavaFX.scene.media.MediaPlayer类

该类的属性以及 setter 方法在下表中描述。

属性属性设置器方法
audioSpectrumInterval这是一个double类型的属性。 它指示频谱更新之间的间隔(以秒为单位)。setAudioSpectrumInterval (double value)
audioSpectrumListener这是AudioSpectrumListener类的对象类型属性。 它指示音频频谱的audiospectrumlistener。setAudioSpectrumListener(AudioSpectrumListener listener)
audioSpectrumNumBands这是一个整数类型属性。 它指示音频频谱之间的频带数。setAudioSpectrumNumBands(int value)
audioSpectrumThreshold这是一个整数类型属性。 它指示灵敏度阈值setAudioSpectrumThreshold(int value)
autoPlay这是布尔类型属性。 true值表示将尽快开始播放。setAutoPlay(Boolean value)
balance这是一个double类型的属性。 它指示音频输出的平衡。setBalance(double value)
bufferProgressTime这是Duration类的对象类型属性。 它指示可以在不停止媒体播放器的情况下播放的媒体的持续时间。由于它是只读属性,因此无法设置。
currentCount这是只读的整数类型属性。 它指示已完成的播放周期数。由于它是只读属性,因此无法设置。
currentRate这是一个double类型的属性。 它指示播放的当前速率。 它是只读属性。由于它是只读属性,因此无法设置。
currentTime这是Duration类的对象类型属性。 它指示当前的媒体播放时间。由于它是只读属性,因此无法设置。
cycleCount它是整数类型属性。 它指示媒体将被播放的次数。setCycleCount(int value)
cycleDuration它是就绪的只读属性。 它是Duration类的对象类型。 它指示媒体的开始时间和停止时间之间的持续时间。由于它是只读属性,因此无法设置。
错误它是一个只读属性。 它是MediaException类的对象类型属性。 如果发生错误,则将其设置为Media-Exception。由于它是只读属性,因此无法设置。
mute它是布尔类型属性。 它指示是否将音频静音。SetMute(boolean value)
onEndOfMedia它是接口Runnable的对象类型属性。 它设置为事件处理程序,该事件处理程序将在到达媒体文件的结尾时被调用。setOnEndOfMedia(java.lang.Runnable value)
onError它是接口Runnable的对象类型属性。 它指示状态更改为停止时将调用的事件处理程序。setOnHalted(java.lang.Runnable value)
onMarker它是MediaMarkerEvent类的对象类型属性。 它指示当当前时间达到媒体标记时将调用的EventHandler。setOnMarker(EventHandler<MediaMarkerEvent> onMarker )
onPaused它是接口Runnable的对象类型属性。 它指示状态更改为暂停时将调用的EventHandler。setOnPaused(java.lang.Runnable value)
onPlaying它是接口Runnable的对象类型属性。 它指示状态更改为播放时将调用的EventHandler。setOnPlaying(java.lang.Runnable value)
onReady它是接口Runnable的对象类型属性。 它指示状态更改为就绪时将调用的EventHandler。setOnReady(java.lang.Runnable value)
onRepeat它是MediaMarkerEvent类的对象类型属性。 它指示当当前时间到达停止时间并且将重复时将被调用的EventHandler。setOnRepeat(java.lang.Runnable value)
onStalled它是接口Runnable的对象类型属性。 它指示状态更改为停止时将调用的事件处理程序。setOnStalled(java.lang.Runnable value)
onStopped它是接口Runnable的对象类型属性。 它指示状态更改为已停止时将调用的EventHandler。setOnStopped(java.lang.Runnable value)
rate它是double类型的属性。 它指示媒体应播放的速率。setRate(double value)
startTime此属性是Duration类的对象类型。 它指示媒体应开始播放的时间。setStartTime(Duration value)
status这是只读属性。 它指示媒体播放器的当前状态。由于它是只读属性,因此无法设置。
stopTime此属性是Duration类的对象类型。 它指示媒体应停止播放的时间偏移量。setStopTime(double value)
totalDuration它是Duration类的对象类型属性。 它指示媒体应播放的总时间。由于它是只读属性,因此无法设置。
volume这是一个double类型的属性。 它指示应播放媒体的音量。setVolume(double value)

构造函数

该类仅包含一个构造函数,如下所示。


下一个主题JavaFX播放音频