как использовать vlcj с Java?

#java #vlcj

#java #vlcj

Вопрос:

Всем привет, я пытаюсь использовать vlcj для java, но сталкиваюсь с большим количеством ошибок. Я проверил, что моя версия jvm и версия vlc media являются 64-разрядными.

Я перепробовал множество кодов, которые я исследовал в Интернете. Я выполнил этот шаг, вставив vlcj.jar в моем коде, но, похоже, ничего не работает.

Я следовал руководству по caprica , но это не сработало. Теперь я получаю сообщение об ошибке

Exception in thread "main" java.lang.IllegalArgumentException: Interface (LibVlc) of library=libvlc does not extend Library B.

Может кто-нибудь, пожалуйста, помочь в этом?

 package mrbool.vlc.example; 

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.factory.MediaPlayerFactory;

import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.binding.LibVlc;

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import uk.co.caprica.vlcj.binding.RuntimeUtil;
public class JavaApplication1 {
        


    public static void main(String[] args) {
      NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),"C:\Program Files\VideoLAN\VLC");
      Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
      MediaPlayerFactory factory = new MediaPlayerFactory();
    }

 
  

}

Ответ №1:

установите vlc media Player в тот же каталог, в котором находится ваш проект

Ответ №2:

Иногда проблема возникает из-за несовместимости архитектуры VLC и JRE.

Вы можете проверить архитектуру JRE, используя приведенный ниже код:

 public class JavaApplication12 {
    public static void main(String[] args) {
        System.out.println(System.getProperty("sun.arch.data.model"));
    }
}


EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        EmbeddedMediaPlayer embeddedMediaPlayer = mediaPlayerComponent.getMediaPlayer();

        Canvas videoSurface = new Canvas();
        videoSurface.setBackground(Color.black);
        videoSurface.setSize(800, 600);

        List<String> vlcArgs = new ArrayList<String>();

        vlcArgs.add("--no-plugins-cache");
        vlcArgs.add("--no-video-title-show");
        vlcArgs.add("--no-snapshot-preview");

        MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(vlcArgs.toArray(new String[vlcArgs.size()]));
        mediaPlayerFactory.setUserAgent("vlcj test player");
        embeddedMediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(videoSurface));
        embeddedMediaPlayer.setPlaySubItems(true);

        final PlayerControlsPanel controlsPanel = new PlayerControlsPanel(embeddedMediaPlayer);
        PlayerVideoAdjustPanel videoAdjustPanel = new PlayerVideoAdjustPanel(embeddedMediaPlayer);

//            mediaPlayerComponent.getMediaPlayer().playMedia(Constant.PATH_ROOT   Constant.PATH_MEDIA   "tmp.mp4");
        JFrame mainFrame = new JFrame();
        mainFrame.setLayout(new BorderLayout());
        mainFrame.setBackground(Color.black);
        mainFrame.add(videoSurface, BorderLayout.CENTER);
        mainFrame.add(controlsPanel, BorderLayout.SOUTH);
        mainFrame.add(videoAdjustPanel, BorderLayout.EAST);

        //create a button which will hide the panel when clicked.
        mainFrame.pack();
        mainFrame.setVisible(true);

        embeddedMediaPlayer.playMedia("tmp.mp4");
  

Ответ №3:

Кроме того, чтобы сделать это самостоятельно, я бы предложил использовать chrome. Вы просто щелкаете правой кнопкой мыши на том, что хотите очистить, и переходите к проверке элемента. Это приведет вас к точному месту в html, где расположен этот элемент. В этом случае сначала нужно выяснить, где находится корень всех списков результатов. Когда вы найдете это, вы захотите указать элемент и, предпочтительно, уникальный атрибут для поиска по нему. В этом случае корневой элемент, который я

 public class ScanWebSO 
    {
    public static void main (String args[])
    {
        Document doc;
        try{
            doc =        Jsoup.connect("https://www.google.com/search?as_q=amp;as_epq="Yorkshire Capital" amp;as_oq=fraud OR allegations OR scamamp;as_eq=amp;as_nlo=amp;as_nhi=amp;lr=lang_enamp;cr=countryCAamp;as_qdr=allamp;as_sitesearch=amp;as_occt=anyamp;safe=imagesamp;tbs=amp;as_filetype=amp;as_rights=").userAgent("Mozilla").ignoreHttpErrors(true).timeout(0).get();
            Elements links = doc.select("li[class=g]");
            for (Element link : links) {
                Elements titles = link.select("h3[class=r]");
                String title = titles.text();
    
                Elements bodies = link.select("span[class=st]");
                String body = bodies.text();
    
                System.out.println("Title: " title);
                System.out.println("Body: " body "n");
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }
    }
    }