2015-03-21 6 views
1

Добрый день, коллеги!Добавить субтитры и основную панель управления в VLCJ @ Java

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

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

2) Также, как я могу настроить VLC-библиотеку в x64-ОС Windows?

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); 
     } 
    } 

ответ

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, показанный here, отменяет paint(). Этот связанный, автономный example иллюстрирует тестирование ударов в таком контексте.

 Смежные вопросы

  • Нет связанных вопросов^_^