У меня есть .MP4-видео, размещенное в папке «res/media» внутри моего проекта. Я легко могу воспроизвести это видео в моем приложении от затмения, используя этот кусок кода:VLCJ - воспроизведение видео из папки «res» отлично работает в eclipse, но не из исполняемого файла JAR
String url = getClass().getResource("/media/video.mp4").getFile();
url = new File(url).getPath();
showMedia(url); //the method that plays the video
я должен был использовать этот код, потому что использование только URL url = getClass().getResource("/media/video.mp4");
делает VLCJ не может получить доступ к видео с помощью этого URL.
При создании исполняемого файла JAR, я получаю эти ошибки в консоли:
libdvdnav: Using dvdnav version 5.0.0
libdvdread: Could not open D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 with libdvdcss.
libdvdread: Can't open D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 for reading
libdvdnav: vm: failed to open/read the DVD
[1644d0ac] filesystem access error: cannot open file D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 (Invalid argument)
[1644d0ac] main access error: File reading failed
[1644d0ac] main access error: VLC could not open the file "D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4" (Invalid argument).
[1645643c] main input error: open of `file:///D:/Desktop/file%3A/D%3A/Desktop/app.jar%21/media/video.mp4' failed
[1645643c] main input error: Your input can't be opened
[1645643c] main input error: VLC is unable to open the MRL 'file:///D:/Desktop/file%3A/D%3A/Desktop/app.jar%21/media/video.mp4'. Check the log for details.
Библиотеки успешно загружены, и я даже могу играть любое видео, которое находится вне моего файла JAR.
Любые предложения?
И спасибо заранее.
Благодарим за ответ. Но 'getAbsolutePath();' возвращает неправильный путь к видео из файла jar: 'D: \ Desktop \ res \ media \ video.mp4' , в то время как jar находится на моем рабочем столе с именем" app.jar ", выглядит он пропускает файл jar. Я также попробовал 'showMedia (" jar: // D: /Desktop/app.jar! /res/media/video.mp4 ");' и это не сработало. Что мне здесь не хватает? –
Если вы хотите играть изнутри файла jar, вы должны использовать формат zip MRL, который я уже описал. Если вы хотите динамически обнаруживать путь к файлу jar во время выполнения, вам нужно будет сделать некоторые манипуляции с строкой самостоятельно, чтобы создать полный zip-файл MRL – caprica