2012-05-03 16 views
5

Buduję małą aplikację Swing, w której chciałbym umieścić film. Co ważne, ta aplikacja jest aplikacją WebStart - a biblioteka powinna być dostępna w pakiecie w jnlp, który uruchamiam - -i.e, niezaleŜnie od bibliotek natywnych.Wszelkie proste (i aktualne) platformy Java do osadzania filmów w aplikacji Swing?

Jestem świadomy i próbowałem JMF, ale zgodność formatów Uważam, że są stosunkowo słabe w porównaniu do innych frameworków tam.

Czy ktoś mógłby podać przykładowy fragment kodu prostej implementacji przy użyciu zalecanej biblioteki?

Wielkie dzięki z góry.

Odpowiedz

28

Kilka uwag dotyczących JavaFX jako rozwiązania opartego na technologii Java opartej na odtwarzaniu multimediów.

  1. Od Jdk7u4, JavaFX jest współpraca w pakiecie z JDK dla Mac i Windows (XP, Vista, 7, 32 i 64 bit).
  2. JavaFX może być osadzony w aplikacji Swing.
  3. JavaFX zawiera biblioteki macierzyste, ale każda struktura Java będzie potrzebować bibliotek natywnych do robienia filmów.
  4. Kompleksowy zestaw narzędzi do wdrażania jest dołączony do zestawu JavaFX SDK i/lub zawiera możliwość generowania wdrożeń opartych na jnlp.
  5. JavaFX 2.1 obsługuje kodowane flvs w formacie vp6 (starszy format), a także bardziej nowoczesne i często używane formaty kodowania, takie jak mp4/aac/mp3.
  6. JavaFX obsługuje tylko ograniczone kodeki multimedialne i formaty kontenerów, np. jeśli masz zainstalowany kodek na swoim komputerze i możesz odtwarzać plik zakodowany w tym formacie, na przykład chrome, Windows Media Player lub Flash, który nie gwarantuje, że ten sam plik będzie odtwarzany w JavaFX.
  7. Odtwarzanie mp4 w systemach XP lub Linux wymaga od użytkownika ręcznego zainstalowania niezbędnego kodeka, ale inne platformy (osx, win7, vista) nie wymagają ręcznej instalacji kodeka MP4.
  8. Używanie JavaFX na komputerze Mac wymaga użycia OpenJDK 7 dla Mac, a nie Apple JDK.
  9. Obsługa JavaFX dla uruchomionych aplikacji jnlp na komputerach Mac nie będzie dostępna do końca tego roku (2012) i podobnie do systemu Linux.
  10. Prawdopodobnie mógłbyś połączyć całą platformę JavaFX z aplikacją w jnlp (chociaż nie widziałem, aby jeszcze ktoś to zrobił).
  11. Zalecaną metodą wdrożenia jnlp byłoby dodanie specyfikacji minimalnego środowiska JavaFX do pakietu jnlp, a zestaw narzędzi do wdrażania JavaFX i strona internetowa zadbają o to, aby był obecny i zainstalowany poprawnie na komputerze użytkownika.
  12. Interakcja pomiędzy Swingiem i JavaFX wymaga pewnych niedogodności i staranności związanej z gwintowaniem, a także nieco odmiennego kodu uruchamiania aplikacji między Swingiem i JavaFX. Niektórzy narzekali na to na forach, większość z nich nie miała zbyt wielu problemów.
  13. Dla lepszego lub gorszego (chyba lepiej), JavaFX jest prawdopodobnie jedyną platformą rozwoju mediów i klientów Oracle, która otrzymuje stały rozwój i nowe funkcje.
  14. Ostatecznie (w tym lub kolejnym roku) JavaFX zostanie włączony we wszystkie nowe środowiska wykonawcze Java dla wszystkich głównych platform konsumenckich, które obsługują nowoczesne wersje Java SE.
  15. Wsparcie społeczności dla rozwoju w JavaFX od Oracle i stron trzecich jest (wierzę) dobre.

Oto próbka JavaFX app, które odtwarza wideo:

import javafx.application.Application; 
import javafx.scene.*; 
import javafx.scene.media.*; 
import javafx.stage.Stage; 

public class VideoPlayerExample extends Application { 
    public static void main(String[] args) throws Exception { launch(args); } 
    @Override public void start(final Stage stage) throws Exception { 
    final MediaPlayer oracleVid = new MediaPlayer(
     new Media("http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv") 
    ); 
    stage.setScene(new Scene(new Group(new MediaView(oracleVid)), 540, 208)); 
    stage.show(); 

    oracleVid.play(); 
    } 
} 
+2

Kompleksowe podsumowanie *** i *** próbka kodu? To oznacza "pokonanie dodatkowej odległości". :) –

+0

Absolutnie - nie mógł się zgodzić więcej. – totalcruise

3

Chociaż nie miałem żadnych problemów ze zgodnością formatów o JMF, możesz zajrzeć do JavaFX, który został zaprojektowany jako konkurent Flash, więc powinien obsługiwać wszystkie formaty multimediów i kodeki. Możesz również osadzić Flash Player w aplikacji java za pomocą JNI/JNA, ale wydaje się to zbyt skomplikowane. Polecam zacząć od JMF i szukać innego rozwiązania tylko wtedy, gdy naprawdę masz problemy.

2

..have próbował JMF ale zgodność formatu uważam za stosunkowo słaba w porównaniu do innych ram tam.

Masz rację co do braku wsparcia dla nowoczesnych kodeków, ale działa dobrze dla starszych kodeków. Może to być opłacalna opcja, jeśli:

  1. Użytkownik kontroluje format (w przeciwieństwie do otwierania przez użytkownika "dowolnego starego wideo" w nim). Co najwyraźniej robisz.
  2. Przepustowość nie jest wielkim problemem. Bardziej nowoczesne kodeki znacznie poprawiły kompresję.

Podczas gdy wersja JMF "performance pack", która używa natywnych obsługuje więcej formatów, podstawowe Java JMF API zapewnia również kilka podstawowych formatów.

Powiązane problemy