0

我有一个媒体播放器,即 vlcj,我通过它在 java 框架和面板中显示视频,我想知道是否有一种方法可以一个接一个地播放视频的 2 部分,例如我想播放 10: 00 到 12:00 和 13:00 到 14:00 之间没有任何中断,我通过在我的嵌入式媒体播放器的完成事件中编写 playmedia 13:00 到 14:00 来做到这一点,但我想知道是否还有另一个方式或更短的方式,我使用 vlcj 和 java (netbeans)

 p = new Canvas();
p.setSize(p1.getWidth(),p1.getHeight());
o = new Canvas();
p1.add(p,BorderLayout.CENTER);
p2.add(o,BorderLayout.CENTER);
m1 = new MediaPlayerFactory();
m2 = new MediaPlayerFactory();
e1 = m1.newEmbeddedMediaPlayer();
e1.setVideoSurface(m1.newVideoSurface(p));
e1.playMedia("src/Video/656.mkv", ":start-time="+(60*15 + 24.6), ":stop-time="+(60*15 + 30.1));
4

1 回答 1

1

您有两个主要选择:

  1. 使用 EmbeddedMediaListPlayerComponent 而不是 EmbeddedMediaPlayerComponent,并将您的媒体(以及开始时间和停止时间媒体选项)添加到播放列表中。

  2. 使用包含表示播放列表项(开始时间、结束时间和 MRL)的对象的 ArrayList 实现您自己的播放列表,并使用媒体播放器事件侦听器中的 finished() 和 error() 回调来管理它。所以你得到了一个finished() 事件,你前进到播放列表中的下一个项目并播放它(使用你的开始时间和停止时间媒体选项)。

#1 的主要问题是底层 libvlc 原生媒体列表播放器不如常规原生媒体播放器可靠。它似乎更容易出错并且容易崩溃。

#1 的主要优点是它是一个接一个地播放多个视频的最快、最无缝的方式。

#2 的主要问题是你需要做更多的工作来实现。此外,从一个视频到下一个视频的转换可能不像 #1 那样无缝。

对于#2,您可能还需要考虑如何同步对播放列表的访问。

于 2013-11-05T22:26:52.333 回答