2012-05-03 10 views
5

Sto costruendo una piccola applicazione Swing che vorrei incorporare un film all'interno. È importante sottolineare che questa applicazione è un'applicazione WebStart e la libreria deve essere in grado di essere inserita nel pacchetto jnlp che avvio -i.e, non dipendente dalle librerie native.Qualsiasi framework Java semplice (e aggiornato) per l'incorporamento di filmati all'interno di un'applicazione Swing?

Sono a conoscenza e ho provato JMF ma la compatibilità dei formati credo sia relativamente scarsa rispetto ad altri framework disponibili.

Qualcuno potrebbe fornire uno snippet di codice di esempio di un'implementazione semplice utilizzando la libreria consigliata?

Molte grazie in anticipo.

risposta

28

Alcune considerazioni per JavaFX come soluzione come framework di riproduzione multimediale basato su Java.

  1. A partire dal Jdk7u4, JavaFX è co-bundle con il JDK per Mac e Windows (XP, Vista, 7, 32 e 64 bit).
  2. JavaFX può essere incorporato in un'app Swing.
  3. JavaFX include librerie native, ma qualsiasi Java Framework avrà bisogno di librerie native per fare video bene.
  4. Un kit di strumenti di implementazione completo è incluso in JavaFX SDK e/o include la possibilità di generare distribuzioni basate su jnlp.
  5. JavaFX 2.1 supporta flv codificati in vp6 (formato precedente) nonché alcuni formati di codifica più moderni e spesso usati come mp4/aac/mp3.
  6. JavaFX supporta solo codec multimediali e formati contenitore limitati, ad es. se hai un codec installato sul tuo computer e puoi riprodurre un file codificato in quel formato, ad esempio chrome, windows media player o flash che non garantisce che lo stesso file venga riprodotto in JavaFX.
  7. La riproduzione di mp4 su XP o Linux richiede l'installazione manuale del codec necessario, ma altre piattaforme (osx, win7, vista) non richiedono l'installazione manuale di codec mp4.
  8. L'uso di JavaFX su un Mac richiede all'utente di utilizzare OpenJDK 7 per Mac, non Apple JDK.
  9. Il supporto JavaFX per le app avviate con jnlp su Mac non sarà disponibile fino a fine anno (2012) e allo stesso modo per Linux.
  10. Probabilmente potresti raggruppare l'intera piattaforma JavaFX con la tua app in un jnlp (anche se non ho ancora visto nessuno farlo).
  11. Il metodo consigliato per una distribuzione jnlp consiste nell'aggiungere una specifica di un ambiente JavaFX minimo a jnlp e fare in modo che il toolkit di distribuzione JavaFX e il webstart si assicurino che fosse presente e installato correttamente sulla macchina dell'utente.
  12. L'interazione tra Swing e JavaFX richiede alcuni inconvenienti e attenzione per il threading e anche un codice di avvio delle app leggermente diverso tra Swing e JavaFX. Alcune persone si sono lamentate di questo sui forum, la maggior parte non sembra aver avuto troppi problemi.
  13. Per il meglio o per il peggio (credo sia meglio), JavaFX è probabilmente l'unico framework di sviluppo di media e client di Oracle che sta ricevendo un notevole sviluppo e nuove funzionalità.
  14. Eventualmente (quest'anno o successivo) JavaFX includerà tutti i nuovi runtime Java per tutte le principali piattaforme consumer che eseguono versioni moderne di Java SE.
  15. Il supporto della comunità per lo sviluppo in JavaFX da Oracle e terze parti è (credo) buono.

Ecco un JavaFX app campione che riproduce un video:

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

Un riepilogo completo *** e *** un esempio di codice? Questo sta 'andando alla distanza extra'. :) –

+0

Assolutamente - non potrei essere più d'accordo. – totalcruise

3

Sebbene non abbia avuto problemi con la compatibilità dei formati di JMF è possibile dare un'occhiata a JavaFX che è stato progettato per essere un concorrente di Flash, quindi dovrebbe supportare tutti i formati multimediali e i codec. È anche possibile incorporare il lettore Flash nell'applicazione java utilizzando JNI/JNA, ma sembra troppo complicato. Ti consiglio di iniziare con JMF e cercare altre soluzioni solo se hai davvero problemi.

2

..Have provato JMF ma la compatibilità con il formato Credo sia relativamente scarsa rispetto ad altri framework là fuori.

Hai ragione riguardo la mancanza di supporto per i codec moderni, ma funziona bene per i codec meno recenti. Potrebbe essere un'opzione valida se:

  1. È possibile controllare il formato (in contrasto con l'utente che apre 'qualsiasi vecchio video' in esso). Che apparentemente fai.
  2. La larghezza di banda non è un problema enorme. I codec più moderni hanno migliorato notevolmente la compressione.

Mentre la versione 'performance pack' del JMF che utilizza i nativi supporta più formati, l'API JMF Java principale fornisce anche alcuni formati di base.

Problemi correlati