VLCJ — воспроизведение потокового видео rtsp в eclipse, но не после создания исполняемого файла JAR

#java #eclipse #stream #rtsp #vlcj

#java #eclipse #поток #rtsp #vlcj

Вопрос:

У меня есть клиентское приложение rtsp stream. Он принимает адрес потока rtsp из файла cam1.bin и отлично работает в eclipse, но после экспорта в исполняемый файл JAR возникает проблема. Вероятно, с absolutepath, я так думаю. Я перепробовал много способов исправить это с помощью absolutepath, но безрезультатно.

 public static void main(String [] args) {
    
JFrame f = new JFrame();
f.setLocation(100,100);
f.setSize(1200,720);    
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
f.setVisible(true); 
//f.setAlwaysOnTop(true);
f.setTitle("rtsp app");

Canvas c = new Canvas();
c.setBackground(Color.black);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());

p.add(c);
f.add(p);


NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),"lib");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

MediaPlayerFactory mpf = new MediaPlayerFactory();
EmbeddedMediaPlayer emp = mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f));
emp.setVideoSurface(mpf.newVideoSurface(c));
//emp.toggleFullScreen();
emp.setEnableMouseInputHandling(false);
emp.setEnableKeyInputHandling(false);



try{
    DataInputStream strumien = new DataInputStream(new FileInputStream("cam1.bin"));
    
    String file= (strumien.readUTF()); 
            
    emp.prepareMedia(file);
    
    emp.play();
    
    strumien.close();   
} catch(FileNotFoundException e){
    System.out.println("File not found");
} catch(IOException e){
    System.out.println("OI error");
}
}
  

}

Есть идеи, советы?

Заранее благодарю вас.

Комментарии:

1. Если cam.bin он находится в jar, вы не можете его прочитать FileInputStream . Объекты в jar не являются файлами и не могут быть прочитаны с помощью файловых API. Посмотрите на Class.getResource, Class.getResourceAsStream

2. Hi. Cam.bin — это отдельный файл. Другое мое приложение, предназначенное для чтения / записи адреса rtsp в этом файле, не имеет проблем с доступом к нему. Итак, проблема заключается в правильном чтении адреса rtsp после экспорта файла JAR. Раньше в eclipse ide это работало абсолютно нормально.

3. Находится ли «cam1.bin» в том же каталоге, из которого вы запускаете исполняемый файл jar? И когда вы говорите, что есть «проблема», что вы имеете в виду — исключение, если да, опубликуйте исключение.

4. Да, файл «cam1.bin» находится в том же каталоге (до экспорта jar в каталог проекта — тогда все работает нормально, и после экспорта в тот же каталог, что и файл jar). Перед экспортом в ide все в порядке, но после экспорта остается только черный фон (как установлено в setBackground). Исключений нет, потому что приложение видит файл и считывает его. В более ранней версии этой программы, когда в коде вводился адрес потока rtsp, проблема была той же. В ide все в порядке, но после экспорта приложение не хотело открывать адрес (черный фон). Вот почему я задаюсь вопросом, проблема с интерпретацией пути. (библиотека в каталоге).

5. Когда вы создаете свой MediaPlayerFactory, передайте «-vvv», затем изучите созданные собственные журналы.