减少JavaFX MediaPlayer RAM的使用-缓冲吗?

时间:2018-07-04 15:05:09

标签: java video memory javafx media-player

我正在尝试创建一个程序,该程序允许使用JavaFX同时观看多个视频。目前,我正在使用包含MediaPlayer的MediaViewer来播放媒体文件(.mp4文件)。

// Convert path to URI
String sourceURI = Paths.get(sourcePath).toUri().toString();

// Create media source
Media media = new Media(sourceURI);

// Create the player
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(false);

// Create the view
MediaView mediaView = new MediaView(mediaPlayer);

据我所知,媒体播放器将整个视频加载到内存中以便快速使用。但是,我的程序将需要加载多个视频(实际使用中可能会同时显示约10个视频),每个源视频的分辨率均为1080p,最长可达20分钟,因此加载完整视频是非常不切实际的视频立即存入内存。

我已经实现了视频加载和同时播放,但是一旦加载了多个视频,它就会变得非常缓慢,并且经常由于占用过多的内存而崩溃。

提高性能的可能方法是降低所加载视频的分辨率(因为它们仅以很小的尺寸显示)或使用缓冲,在这种情况下,只有几秒钟/分钟的视频被加载到内存中需要。

但是,从浏览文档开始,似乎没有任何方法可以使MediaPlayer缓冲视频或在将视频加载到内存之前缩小视频的大小。您可以调整播放器的大小,但是它仍会将完整的视频加载到内存中(这对内存使用没有影响)。

如何实现这两种技术,或者还有其他方法可以提高MediaPlayer用于同时播放多个视频的性能?

0 个答案:

没有答案