我想播放硬盘中存在的两个(或更多)视频,如何更新 Media 对象以便 MediaPlayer 自动转到下一个视频。
问问题
6556 次
2 回答
2
现在我无法测试它,但我认为它应该可以工作:
public MediaView createMediaView(Collection<String> urls){
MediaView mediaView = new MediaView();
initMediaPlayer(mediaView, urls.iterator());
return mediaView;
}
private void initMediaPlayer(
final MediaView mediaView,
final Iterator<String> urls
){
if (urls.hasNext()){
MediaPlayer mediaPlayer = new MediaPlayer(new Media(urls.next()));
mediaPlayer.setAutoPlay(true);
mediaPlayer.setOnEndOfMedia(new Runnable() {
@Override public void run() {
initMediaPlayer(mediaView, urls);
}
});
mediaView.setMediaPlayer(mediaPlayer);
}
}
于 2012-09-18T17:59:06.387 回答
1
这是一个从硬盘播放 AudioPlaylist 的示例程序。
该程序通过为每个要播放的文件创建一个包含新 MediaPlayer 和新媒体的列表来工作。程序中有一个 MediaView,对于每个 MediaPlayer,onEndOfMedia MediaView 的 MediaPlayer 设置为列表中的下一个。这与 jju 的递归答案几乎相同。
请注意,要更改正在播放的媒体,您无需更新 MediaPlayer 中的媒体(没有办法这样做,因为媒体和 MediaPlayer 之间存在 1:1 对应关系),而是更新 MediaView 中的 MediaPlayer。
视频的概念与音频几乎相同,因为 JavaFX 中的音频和视频都表示为由 MediaPlayer 播放并通过 MediaView 管理的媒体。
于 2012-09-18T19:32:12.463 回答