Добавить субтитры и базовую панель управления в VLCJ @ Java

1

Хорошие коллеги!

У меня было несколько проблем с использованием VLCJ и других API-интерфейсов Java.

1) Я бы добавил простой *.srt файл в свой EmbeddedMediaPlayerCompononent, бот, как это возможно?

2) Также, как я могу настроить VLC lib в x64 Windows OS?

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files (x86)\\VideoLAN\\VLC");
                    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(),libVlc.class);

Это плохо работает.

3) Как я могу добавить базовый интерфейс операции в свой EmbeddedMediaPlayerCompononent, например, кнопку паузы/воспроизведения?

Спасибо, всего хорошего! :)

Мой класс "VideoPlayer"

    package GUI.MediaPlayer;
    import java.awt.BorderLayout;
    import java.io.IOException;

    import javax.swing.JFrame;
    import javax.swing.JOptionPane;

    import uk.co.caprica.vlcj.binding.LibVlc;
    import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
    import uk.co.caprica.vlcj.runtime.RuntimeUtil;
    import StreamBean.UIBean;

    import com.sun.jna.Native;
    import com.sun.jna.NativeLibrary;

    public class VideoPlayer extends JFrame{
        private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
        public VideoPlayer(String videoURL) {

            String os = System.getProperty("os.name").toLowerCase();

            if(os.startsWith("win")){
                String registrytype = System.getProperty("sun.arch.data.model");
                System.out.println("a rendszered : " +os+" - " +registrytype+ " bites");
                if(registrytype.contains("32")){
                    //Windows 32 bites verzió
                    System.out.println("Belépett a 32-be");
                    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC");
                    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
                }else if(registrytype.contains("64")){
                    //Windows 64 bites verzió
                    System.out.println("Belépett a 64-be");
                    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files (x86)\\VideoLAN\\VLC");
                    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
                }else{
                    JOptionPane.showMessageDialog(null, "Kérem előbb telepítse a VLC lejátszót.");
                }

            }
            if(os.startsWith("mac")){
                //Mac OSX kiadáshoz  
                NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "/Applications/VLC.app/Contents/MacOS/lib/");
                Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
            }

            this.setTitle("Aktuális videó");
            this.setLayout(new BorderLayout());

            mediaPlayerComponent = new EmbeddedMediaPlayerComponent();

            this.add(mediaPlayerComponent,BorderLayout.CENTER);

            this.setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
                        //set the Jframe - this - resolution to the screen resoltuion
            new UIBean().setWindowSize(this);
            this.setVisible(true);

            mediaPlayerComponent.getMediaPlayer().playMedia(videoURL);
        }
    }
Теги:
swing
subtitle
vlcj

2 ответа

2
Лучший ответ

Чтобы установить файл внешних субтитров:

mediaPlayerComponent.getMediaPlayer().setSubTitleFile("whatever.srt");

Как вы добавляете кнопку паузы/воспроизведения, полностью зависит от вас, для этого требуется стандартный код Swing, который не является особым для vlcj. Вы добавляете кнопки в свой пользовательский интерфейс и связываете эти кнопки с медиаплеером с помощью прослушивателей событий. Например, это один из способов:

JButton playButton = new JButton("Play/Pause");
playButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
        mediaPlayerComponent.getMediaPlayer.pause();
    }
});

Существует множество причин, по которым родная библиотека может быть не найдена, но NativeLibrary.addSearchPath(...), безусловно, работает. Вы должны быть уверены, что сопоставляете архитектуры процессоров вашей JVM и вашей установки VLC (для 32-разрядной JVM требуется 32-разрядная VLC, для 64-разрядной JVM требуется 64-разрядная VLC). В большинстве случаев вы должны просто использовать:

new NativeDiscovery().discover();

Существует целая серия пошаговых руководств по адресу http://capricasoftware.co.uk/#/projects/vlcj/tutorial

1

Сосредоточив внимание на аспекте "базового операционного интерфейса" вашего вопроса, обратите внимание, что EmbeddedMediaPlayerComponent расширяет Panel, компонент AWT. Соответственно, пример перекрытия VLCJ, показанный здесь, переопределяет paint(). Этот связанный, автономный пример иллюстрирует тестирование попадания в таком контексте.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню