vlcj MediaPlayer:如何检测视频何时播放完毕

时间:2014-11-13 13:15:28

标签: java video media-player libvlc vlcj

我正在播放视频文件(全屏),我想在视频播放完毕后播放音频文件。

事情是:

  • 我可以全屏播放视频文件;
  • 我能够检测到视频文件播放完毕的时间:

    while(!mpu.getMediaPlayer().getMediaPlayerState().toString().equalsIgnoreCase("libvlc_Ended"))
    {
        System.out.println("It's being played");
        estado = mpu.getMediaPlayer().getMediaPlayerState();           
    }
    
  • 但这些线条让我的视频全屏显示......

我需要视频文件全屏显示。

1 个答案:

答案 0 :(得分:2)

如果你想(根据问题标题)检测视频何时播放完毕,你应该使用一个事件监听器 - 你不应该使用查询媒体播放器状态的紧密循环,所以使用:

mpu.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
    @Override
    public void finished(MediaPlayer mediaPlayer) {
        // Code to execute here when media player finished playing...
    }
});

如果您想在第一个视频播放完毕后播放另一个媒体文件(在您的情况下是一个音频文件),那么您可能会考虑使用EmbeddedMediaListPlayerComponent来处理播放列表。

使用EmbeddedMediaListPlayerComponent只是一种可能适合您的方法,但使用事件监听器来管理您自己的播放列表也没有错。

问题的其余部分询问有关全屏行为的信息。

到目前为止,您发布的代码中没有任何内容会导致媒体播放器退出全屏,因此您的代码中的其他内容(您尚未发布)会出错。

您可能需要发布更多代码来展示您是如何实现全屏的 - 特别是您目前还没有展示如何在您的应用程序中嵌入媒体播放器以及您进入全屏模式的准确程度。

vlcj测试源中还有许多示例可以在您应该查看的所有平台上演示播放列表,事件和全屏。