视频不循环播放或重复播放(vlcj java)

qnzebej0  于 2021-07-07  发布在  Java
关注(0)|答案(1)|浏览(748)

我正在java程序中使用vlcj。我需要视频反复播放。我用过setrepeat(true);但这对我没用。这是循环录像的其他方法吗?还是我做错了?请帮帮我。谢谢。

  1. public QueueMonitor() {
  2. initComponents();
  3. //VIDEO
  4. chargerLibrairie();
  5. Canvas c = new Canvas();
  6. panel.add(c);
  7. MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
  8. //Create a media player instance
  9. EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
  10. mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));
  11. mediaPlayer.playMedia("Ospital1.mp4");
  12. mediaPlayer.setRepeat(true);
  13. mediaPlayer.setPlaySubItems(true);
  14. }
  15. public static void chargerLibrairie(){
  16. NativeLibrary.addSearchPath(
  17. RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files/VideoLAN/VLC");
  18. Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
  19. LibXUtil.initialise();
  20. }

另外,在程序运行时,如何设置暂停、播放、降低音量等功能?就像普通的视频播放器一样。

0ejtzxu1

0ejtzxu11#

下面是一些如何使用vlcj进行重复播放的最小示例。
对于当前版本的vlcj、4.x及更高版本:

  1. // vlcj 4.x+
  2. public class RepeatPlayer {
  3. public static void main(String[] args) throws Exception {
  4. String mrl = "some-cool-video.mp3";
  5. EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
  6. JFrame f = new JFrame("Repeat Player");
  7. f.setSize(800, 600);
  8. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  9. f.addWindowListener(new WindowAdapter() {
  10. @Override
  11. public void windowClosing(WindowEvent e) {
  12. mediaPlayerComponent.release();
  13. }
  14. });
  15. f.setContentPane(mediaPlayerComponent);
  16. f.setVisible(true);
  17. mediaPlayerComponent.mediaPlayer().controls().setRepeat(true);
  18. mediaPlayerComponent.mediaPlayer().media().play(mrl);
  19. Thread.currentThread().join();
  20. }
  21. }

因为看起来您使用的是一个古老版本的vlcj,所以之前是这样做的:

  1. // vlcj 3.12.1
  2. public class RepeatPlayer {
  3. public static void main(String[] args) throws Exception {
  4. String mrl = "some-cool-video.mp3";
  5. final EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
  6. JFrame f = new JFrame("Repeat Player");
  7. f.setSize(800, 600);
  8. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  9. f.addWindowListener(new WindowAdapter() {
  10. @Override
  11. public void windowClosing(WindowEvent e) {
  12. mediaPlayerComponent.release();
  13. }
  14. });
  15. f.setContentPane(mediaPlayerComponent);
  16. f.setVisible(true);
  17. mediaPlayerComponent.getMediaPlayer().setRepeat(true);
  18. mediaPlayerComponent.getMediaPlayer().playMedia(mrl);
  19. Thread.currentThread().join();
  20. }
  21. }

因此,最初问题中的代码大体上是正确的,至少在重复播放功能方面是正确的。原始代码最可能的问题是媒体播放器由于无法保存对象引用而被垃圾收集。

展开查看全部

相关问题