连续播放同一视频的2个不同部分

时间:2013-11-05 17:29:41

标签: java video vlcj

我有一个媒体播放器,即vlcj,通过它我可以在java框架和面板中显示视频,我想知道是否有一种方法可以让我可以一个接一个地播放视频的两个部分,例如我想要在10:00到12:00和13:00到14:00之间没有任何中断,我已经通过在我的embeddedmediaplayer完成的事件中写了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));

1 个答案:

答案 0 :(得分:1)

您有两个主要选择:

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

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

  3. #1的主要问题是底层的libvlc本地媒体列表播放器不如常规本机媒体播放器可靠。它看起来更加笨拙,容易崩溃。

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

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

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