Вопрос по java, swing – Какие-нибудь простые (и современные) Java-фреймворки для встраивания фильмов в Swing-приложение?

5

Я создаю небольшое приложение Swing, в которое я хотел бы встроить фильм. Важно отметить, что это приложение является приложением WebStart - и библиотека должна иметь возможность упаковываться в jnlp, который я запускаю -i.e, независимо от собственных библиотек.

Я знаю и пробовал JMF, но совместимость форматов, на мой взгляд, является относительно плохой по сравнению с другими системами.

Может ли кто-нибудь предоставить пример кода простой реализации с использованием рекомендованной библиотеки?

Спасибо заранее.

Ваш Ответ

3   ответа
28

воспроизведения мультимедиа на основе Java.

As of Jdk7u4, JavaFX is co-bundled with the jdk for Mac and Windows (XP, Vista, 7, 32 and 64 bit). JavaFX can be embedded in a Swing App. JavaFX includes native libraries, but any Java Framework is going to need native libraries to do video well. A comprehensive deployment toolkit is included with the JavaFX SDK and/or includes the ability to generate jnlp based deployments. JavaFX 2.1 supports vp6 encoded flvs (older format) as well as some more modern and oft-used encoding formats such as mp4/aac/mp3. JavaFX only supports limited media codecs and container formats, e.g. if you have a codec installed on your machine and can play a file encoded in that format in, for example chrome, windows media player, or flash that does not guarantee that the same file will play in JavaFX. Playback of mp4 on XP or Linux requires a user to manually install the necessary codec, but other platforms (osx, win7, vista) do not require manual mp4 codec install. Use of JavaFX on a mac requires the user to use OpenJDK 7 for Mac, not the Apple JDK. JavaFX support for jnlp launched apps on Macs won't be available until later this year (2012) and similarly for Linux. You could probably bundle the entire JavaFX platform with your app in a jnlp (though I haven't seen anybody do that yet). The recommended method for a jnlp deployment would be to add a specification of a minimum JavaFX environment to the jnlp and have the JavaFX deployment toolkit and webstart take care of ensuring that it was present and installed correctly on the user's machine. Interaction between Swing and JavaFX requires some inconvenience and care around threading and also a slightly different app launching code between Swing and JavaFX. Some people have complained about this on forums, most don't seem to have had too many issues. For better or for worse (I believe better), JavaFX is likely the only media and client development framework from Oracle which is receiving ongoing major development and new features. Eventually (this year or next) JavaFX will included in all new Java runtimes for all major consumer platforms which run modern versions of Java SE. Community support for development in JavaFX from Oracle and 3rd parties is (I believe) good.

Вот пример приложения JavaFX, которое воспроизводит видео:

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();
  }
}
Error: User Rate Limit ExceededandError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded totalcruise
3

вы можете взглянуть на JavaFX, который был разработан как конкурент Flash, поэтому должен поддерживать все медиа форматы и кодеки. Вы также можете встроить Flash player в Java-приложение, используя JNI / JNA, но это кажется слишком сложным. Я рекомендую вам начать с JMF и искать другое решение, только если у вас действительно есть проблемы.

2

ly poor when compared to other frameworks out there.

Вы правы насчет отсутствия поддержки современных кодеков, но это прекрасно работает для старых кодеков. Это может быть приемлемым вариантом, если:

You control the format (as opposed to the user opening 'any old video' in it). Which you apparently do. Bandwidth is not a huge problem. The more modern codecs improved compression markedly.

В то время как «пакет производительности» Версия JMF, которая использует нативные, поддерживает больше форматов, базовый Java JMF API также предоставляет несколько основных форматов.

Похожие вопросы