JavaFX Media媒体
现代世界的富互联网应用程序必须能够在需要时播放和编辑媒体文件。JavaFX 提供了丰富的媒体 API,可以根据用户的需求播放音频和视频。
JavaFX Media API 使用户能够将音频和视频合并到富 Internet 应用程序 (RIA) 中。JavaFX 媒体 API 可以在不同范围的设备(如电视、手机、平板电脑等)上分发媒体内容。
在本教程的这一部分,我们将讨论 JavaFX 以交互方式处理媒体文件的能力。为此,JavaFX 提供了包含所有必需类的包javafx.scene.media。javafx.scene.media包含以下类。
- javafx.scene.media.Media
- javafx.scene.media.MediaPlayer
- javafx.scene.media.MediaStatus
- javafx.scene.media.MediaView
媒体事件
JavaFX 团队将媒体 API 设计为事件驱动。媒体函数附带的回调行为用于处理媒体事件。不是通过 EventHandler 为按钮键入代码,而是实现了响应触发媒体播放器的 OnXXXX 事件的代码,其中 XXXX 是事件名称。
java.lang.Runnable函数接口用作回调,在遇到事件时调用。在 javafx 中播放媒体内容时,我们将创建要在 onReady 事件上设置的 Lambda 表达式(java.lang.Runnable 接口)。参考以下示例。
Media media = new Media(url);
MediaPlayer mediaPlayer = new MediaPlayer(media);
Runnable playMusic = () -> mediaPlayer.play();
mediaPlayer.setOnReady(playMusic);
playMusic 变量被分配给一个 lambda 表达式。这被传递到媒体播放器的 setOnReady() 方法中。当遇到 onReady 事件时,将调用 Lambda 表达式。
下表展示了可能的媒体和媒体播放器事件。
Class | setter方法 | 描述 |
---|---|---|
Media | setOnError() | 发生错误时调用此方法。它是类 Media 的一部分。 |
MediaPlayer | setOnEndOfMedia() | 当到达媒体播放结束时调用该方法。 |
MediaPlayer | setOnError() | 发生错误时调用此方法。 |
MediaPlayer | setOnHalted() | 当媒体状态变为暂停时调用此方法。 |
MediaPlayer | setOnMarker() | 当 Marker 事件被触发时调用此方法。 |
MediaPlayer | setOnPaused() | 当发生暂停事件时调用此方法。 |
MediaPlayer | setOnPlaying() | 当播放事件发生时调用此方法。 |
MediaPlayer | setOnReady() | 当媒体处于就绪状态时调用此方法。 |
MediaPlayer | setOnRepeat() | 设置重复属性时调用此方法。 |
MediaPlayer | setOnStalled() | 当媒体播放器停止时调用此方法。 |
MediaPlayer | setOnStopped() | 当媒体播放器停止时调用此方法。 |
MediaView | setOnError() | 当媒体视图中发生错误时调用此方法。 |
我们必须注意到 MediaPlayer 类包含最多触发的事件,而 MediaView 和 Media 类各包含一个事件。
javafx.scene.media.Media 类
下表描述了该类的属性。除了 onError 之外,所有属性都是只读的。
属性 | 描述 |
---|---|
duration | 源媒体的持续时间(以秒为单位)。此属性属于 Duration 类的对象类型。 |
error | 这是发生错误时设置为媒体异常值的属性。此属性属于类 MediaException 的类型对象。 |
height | 源媒体的高度(以像素为单位)。这是一个整数类型的属性。 |
onError | 发生错误时调用的事件处理程序。方法setOnError()用于设置此属性。 |
width | 源媒体的宽度(以像素为单位)。这是一个整数类型的属性 |
javafx.scene.media.Media类的构造方法
- public Media(java.lang.String source):它用指定的源文件实例化类Media。
javafx.scene.media.Media类的属性
属性 | 描述 | setter方法 |
---|---|---|
audioSpectrumInterval | 这是一个双重类型的属性。它以秒为单位指示频谱更新之间的间隔。 | setAudioSpectrumInterval (double value) |
audioSpectrumListener | 这是 AudioSpectrumListener 类的对象类型属性。它指示音频频谱的音频频谱侦听器。 | setAudioSpectrumListener(AudioSpectrumListener listener) |
audioSpectrumNumBands | 这是一个整数类型的属性。它表示音频频谱之间的频段数。 | setAudioSpectrumNumBands(int value) |
audioSpectrumThreshold | 这是一个整数类型的属性。它表示灵敏度阈值 | setAudioSpectrumThreshold(int value) |
autoPlay | 这是布尔类型属性。真值表示将尽快开始播放。 | setAutoPlay(Boolean value) |
balance | 这是一个双重类型的属性。它表示音频输出的平衡。 | setBalance(double value) |
bufferProgressTime | 这是 Duration 类的对象类型属性。它指示可以在不停止媒体播放器的情况下播放媒体的持续时间。 | setType(Double value) |
currentCount | 这是只读的整数类型属性。它表示已完成的播放周期数。 | 不能设置,因为它是只读属性。 |
currentRate | 这是一个双重类型的属性。它指示播放的当前速率。它是只读属性。 | 不能设置,因为它是只读属性。 |
currentTime | 这是 Duration 类的对象类型属性。它指示当前媒体播放时间。 | 不能设置,因为它是只读属性。 |
cycleCount | 它是整数类型的属性。它表示媒体将被播放的次数。 | setCycleCount(int value) |
cycleDuration | 它是现成的唯一属性。它是类 Duration 的类型对象。它表示媒体的开始时间和停止时间之间的时间量。 | 不能设置,因为它是只读属性。 |
error | 它是只读属性。它是类 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 的对象类型属性。它表示当状态更改为 Stalled 时将调用的 Event Handler。 | setOnStalled(java.lang.Runnable value) |
onStopped | 它是接口 Runnable 的对象类型属性。它表示当状态更改为已停止时将调用的 EventHandler。 | setOnStopped(java.lang.Runnable value) |
rate | 它是双重类型的属性。它指示媒体应播放的速率。 | setRate(double value) |
startTime | 此属性属于类 Duration 的类型对象。它指示媒体应该开始播放的时间。 | setStartTime(Duration value) |
status | 这是只读属性。它指示媒体播放器的当前状态。 | 不能设置,因为它是只读属性。 |
stopTime | 此属性是类 Duration 的对象类型。它指示媒体应停止播放的时间偏移。 | setStopTime(double value) |
totalDuration | 它是类 Duration 的对象类型属性。它表示媒体应该播放的总时间。 | 不能设置,因为它是只读属性。 |
volume | 它是一个双重类型的属性。它指示媒体应播放的音量。 | setVolume(double value) |
热门文章
优秀文章