Witam.
Piszę grę strategiczną w Javie używając Eclipse'a. Aktualnie mam problem z wyświetlaniem intra gry (jako pliku mpg lub w innym formacie). Ściągnąłem JMFa i zainstalowałem. Dodałem do projektu odpowiednie pliki .jar, umieściłem je w tym samym folderze co projekt.
JMF sam w sobie działa, projekt się kompiluje i nawet nie ma problemu z odtworzeniem pliku .wav . Niestety przy próbie wyświetlenia .avi, .mpg czy jakiegokolwiek innego formatu są już problemy - czasem jest muzyka, a nie ma obrazu, czasem nie ma nic (zależnie od formatu czy też samego pliku).
Googlowałem na ten temat sporo jednak na nic się to nie zdało.
Po pierwsze: oto interesujący nas kod:
package GUI;
import java.awt.BorderLayout;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Player;
import javax.swing.JFrame;
public class GuiMenu
{
private JFrame okno;
MediaLocator ml;
Player player;
public GuiMenu(String nazwaOkna)
{
okno = new JFrame(nazwaOkna);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.setVisible(true);
okno.setSize(500, 500);
try
{
wyswietlIntro();
} catch (Exception e)
{
System.out.println(e.getMessage());
}
okno.pack();
}
public void wyswietlIntro() throws Exception
{
//ml= new MediaLocator("file:///D:/ProgramyUczelnia/Eclipse/WorkSpace/Smieci/Wege Tycoon 0/bin/southparkintro.mpg");
ml= new MediaLocator("file:///C:/Filmy/droga_po_puchar.mpg");
player = Manager.createRealizedPlayer(ml);
okno.add(player.getVisualComponent(), BorderLayout.CENTER);
player.start();
}
}
Mniej istotna część, główna klasa:
package GUI;
public class Glowna {
/**
* @param args
*/
public static void main(String[] args) {
new GuiMenu("Menu");
}
}
Projekt jak pisałem się kompiluje i wyrzuca w zależności od ładowanego pliku .mpg (nie ma muzyki nie ma obrazu):
Failed to configure: com.sun.media.PlaybackEngine@4e1f0b6e
Bad header in the media: Bad dataError: Unable to realize com.sun.media.PlaybackEngine@4e1f0b6e
null
Exception in thread "main" java.lang.NullPointerException
at GUI.GuiMenu.<init>(GuiMenu.java:42)
at GUI.Glowna.main(Glowna.java:9)
lub (jest muzyka nie ma obrazu)
Unable to handle format: MPEG, 352x288, FrameRate=25.0, Length=152064
null
Co już próbowałem:
a) na nowo instalować JMFa 2.1.1e
b) wyświetlać film razem z paskiem przewijania na dole (a nie tak jak teraz wyświetlany jedynie jest sam obraz bez GUI)
c) próbować tego samego kodu w nowym czystym projekcie
d) restartować kompa
e) wyświetlać te same filmy które ładuje do mojego programu w jmstudio.exe - działają dobrze
Co budzi moje wątpliwości:
a) czytałem, że JMF jest mocno przestarzałe i trzeba dodawać zewnętrzne kodeki do projektu. Ściągnąłem więc paczkę kodeków jffmpeg-1.1.0.jar i dodałem do projektu. Nadal 0 efektu, jednak być może w jakiś inny sposób trzeba zainstalować te kodeki? Jak?
b) 64 bitowy windows na którym pracuję (wiem, że pewnie głupota ale winxp64 często przeszkadza w wielu rzeczach :) )
Z góry dziękuję za pomoc.
edit:
Ściągnąłem kod źródłowy jmstudio.exe . Otworzyłem Eclipsem, skompilowałem i okazuje się, że działa tak samo jak mój program (te same błędy wyrzuca i nie odtwarza filmów). Jednakże, jeśli uruchomię jmstudio.exe, które domyślnie się instaluje razem z biblioteką JMF to ono działa perfekcyjnie. (???)