【问题标题】:VLCJ: Updating the progress bar as the video progressesVLCJ:随着视频的进行更新进度条
【发布时间】:2012-07-12 17:58:05
【问题描述】:

请看下面的代码

import com.sun.jna.Native;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import com.sun.jna.NativeLibrary;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.media.bean.playerbean.MediaPlayer;
import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.MediaPlayerEventListener;

public class PlayMedia extends JFrame
{
    private EmbeddedMediaPlayerComponent m;
    private JProgressBar bar;

    public PlayMedia()
    {

        NativeLibrary.addSearchPath(
      RuntimeUtil.getLibVlcLibraryName(), "c:\\program files\\videolan\\vlc"
    );
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);


        m = new EmbeddedMediaPlayerComponent();
        m.getMediaPlayer().addMediaPlayerEventListener(new UpdateBar());

        bar = new JProgressBar(0,100);
        bar.setStringPainted(true);

        getContentPane().add(m);
        getContentPane().add(bar,"South");


        this.setSize(500,500);
        this.validate();
        this.setLocationRelativeTo(null);

        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


         m.getMediaPlayer().playMedia("C:\\Users\\Yohan\\Desktop\\video.avi");   

    }

    private class UpdateBar extends MediaPlayerEventAdapter
    {
        public void positionChanged(MediaPlayer mp, float pos)
        {
            int value = Math.min(100, Math.round(pos * 100.0f));
            bar.setValue(value);
        }
    }

    public static void main(String[]args)
    {


            SwingUtilities.invokeLater(new Runnable() 
            {
            @Override
                public void run() 
                {
                    new PlayMedia();
                }
            });


    }
}

在这里,视频播放正常,但进度条没有更新。如何在视频播放时更新进度条?请帮忙!

【问题讨论】:

    标签: java multithreading swing vlcj


    【解决方案1】:

    我没有在 Swing 中使用 ProgressBars,但我在 Silverlight 中使用过它们,所以我认为大部分原理都是相同的。在这里查看我的问题的答案: How do I make a Silverlight Progressbar update according to its value? 它可能无法准确地向您展示如何在 Swing 中执行此操作,但您似乎没有在代码中使用线程,这就是我的问题。

    【讨论】:

      【解决方案2】:

      由于某些未知原因,在视频期间未调用 positionChanged()。 尝试使用 timeChanged() 代替,它对我有用!

      public void positionChanged (MediaPlayer mediaPlayer , long time) { ... }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-10
        • 2014-07-16
        • 1970-01-01
        • 1970-01-01
        • 2012-05-22
        • 2013-03-08
        相关资源
        最近更新 更多