vlcj MediaPlayer:如何检测视频播放结束

3

我正在播放一个视频文件(全屏),并希望在视频播放完毕后播放一次音频文件。

问题在于:

  • I'm able to play a video file in full screen;
  • I'm able to detect when the video file has finished playing:

    while(!mpu.getMediaPlayer().getMediaPlayerState().toString().equalsIgnoreCase("libvlc_Ended"))
    {
        System.out.println("It's being played");
        estado = mpu.getMediaPlayer().getMediaPlayerState();           
    }
    
  • But those lines make my video leave it's full screen....

我需要视频文件保持全屏状态。


是玩家而不是你的代码在完成后退出全屏模式,对吧? - Captain Giraffe
不,如果我注释掉那些行,程序就会保持全屏状态。 - Marie
那个紧密循环的做法真的很糟糕。你应该使用事件。 - caprica
1个回答

4
如果您想(根据问题标题)检测视频何时播放完毕,应该使用事件监听器 - 不应使用紧密循环查询媒体播放器状态,因此请使用以下内容:
mpu.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
    @Override
    public void finished(MediaPlayer mediaPlayer) {
        // Code to execute here when media player finished playing...
    }
});

如果您想在第一个视频播放完毕后播放另一个媒体文件(在您的情况下是音频文件),则可以考虑使用EmbeddedMediaListPlayerComponent,它将为您处理播放列表。
使用EmbeddedMediaListPlayerComponent只是一种不同的方法,可能适合您,但使用事件监听器来管理自己的播放列表也没有问题。
您的问题的其余部分涉及全屏行为。
到目前为止,您发布的代码中没有任何东西会导致媒体播放器退出全屏模式,因此您的代码中可能有其他问题。
您可能需要发布更多代码以显示您如何实现全屏 - 特别是您迄今为止未展示如何将媒体播放器嵌入应用程序以及如何精确进入全屏模式。
还有许多例子在vlcj测试源中,演示了所有平台上的播放列表、事件和全屏,您应该进行审核。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接