JavaFX 2.0 Simple Media Player

0

Witam,

Czemu przy każdym pliku który chcę odtworzyć(mp4, avi itp. ) wyskakuje mi wyjątek MediaException: MEDIA_UNSUPPORTED : Unrecognized file signature! Odtwarza tylko pliki mp3.

 package javafxapplication16;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
/**
 *
 * @author NN
 */
public class JavaFXApplication16 extends Application {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(Stage stage) throws Exception {
        
        Group root = new Group();
        Media med = new Media("file:///D://Hell.mp4");       
        MediaPlayer mediaP = new MediaPlayer(med);
        MediaView view=new MediaView(mediaP);
        
        root.getChildren().add(view);
        Scene scena = new Scene(root, 1420, 1200 , Color.BLACK);
        stage.setScene(scena);
        stage.show();
        mediaP.play();


    }
}

Exception in Application start method
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.javafx.main.Main.launchApp(Main.java:453)
at com.javafx.main.Main.main(Main.java:537)
Caused by: java.lang.RuntimeException: Exception in Application start method
at com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at com.sun.javafx.application.LauncherImpl.access$000(Unknown Source)
at com.sun.javafx.application.LauncherImpl$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:722)
Caused by: MediaException: MEDIA_UNSUPPORTED : Unrecognized file signature!
at javafx.scene.media.Media.<init>(Unknown Source)
at javafxapplication16.JavaFXApplication16.start(JavaFXApplication16.java:38)
at com.sun.javafx.application.LauncherImpl$5.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$4.run(Unknown Source)
at com.sun.javafx.application.PlatformImpl$3.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.access$100(Unknown Source)
at com.sun.glass.ui.win.WinApplication$2$1.run(Unknown Source)
... 1 more
Java Result: 1

0

http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#7

  1. Does JavaFX provide support for audio and video codecs?
    JavaFX provides a common set of APIs that make it easy to include media playback within any JavaFX application. The media formats currently supported are the following:
    Audio: MP3; AIFF containing uncompressed PCM; WAV containing uncompressed PCM; MPEG-4 multimedia container with Advanced Audio Coding (AAC) audio
    Video: FLV containing VP6 video and MP3 audio; MPEG-4 multimedia container with H.264/AVC (Advanced Video Coding) video compression .

Jak na razie, wg dokumentacji, tylko te formaty są obsługiwane natywnie.

0

Próbuję i próbuję i nadal nic. Jak mam filmik .flv to odpala, ale mam jedynie czarne tło, a w jednym filmiku po paru sekundach idzie sam dźwięk. Dobrze odtwarza tylko pliki mp3.

0

A czy strumień wideo w tym pliku .flv jest w formacie VP6?

0

Nie wiem jak sprawdzić jak jest kodowany obraz video w pliku flv, ale próbowałem już wielu i między innymi tak podpisany filmik znalazłem "Test FLV VP6", więc w tym jest raczej kodowane wideo w vp6.

0

Daj linka do pliku, dokładnie tego samego którego testujesz.

0

VLC pokazuje mi, że ten plik ma strumień wideo zakodowany w H264 - MPEG-4 AVC, a strumień audio w MPEG AAC.

0

Nie mam już siły szukać, w standardzie to ta Java FX prawie nic nie wspiera. Jak mogę rozszerzyć listę obsługiwanych plików ?

0

Użyłem JDownloadera do ściągnięcia wideo z YouTube (konkretnie to: ). Wybrałem wersję: PSY - GANGNAM STYLE (강남스타일) M_V(360p_H.264-AAC).mp4 a więc taką, która jest wspierana przez JavęFX. Lekko zmieniłem kod na:

package testjavafx;

import java.nio.file.Paths;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

/**
 *
 * @author piotrek
 */
public class TestJavaFX extends Application {
    
    @Override
    public void start(Stage stage) {
        Group root = new Group();
        Media med = new Media(Paths.get("/home/piotrek/.jdownloader/downloads/PSY_-_GANGNAM_STYLE_M_V(360p_H.264-AAC).mp4").toUri().toString());       
        MediaPlayer mediaP = new MediaPlayer(med);
        MediaView view=new MediaView(mediaP);
 
        root.getChildren().add(view);
        Scene scena = new Scene(root, 1420, 1200 , Color.BLACK);
        stage.setScene(scena);
        stage.show();
        mediaP.play();
    }

    /**
     * The main() method is ignored in correctly deployed JavaFX application.
     * main() serves only as fallback in case the application can not be
     * launched through deployment artifacts, e.g., in IDEs with limited FX
     * support. NetBeans ignores main().
     *
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
}

I takie coś u mnie działa.

Jak mogę rozszerzyć listę obsługiwanych plików ?

Pewnie obchodząc JavęFX całkowicie i korzystając z natywnych bibliotek. Chociaż być może są i inne sposoby.

Poza tym bardzo podobne pytanie: http://stackoverflow.com/questions/8153227/adding-other-video-codecs-dvd-support-to-javafx-2-0

0

Ściągnąłem ten sam plik, tym samym programem i zapisałem w tym samym formacie i dalej nie działa (MediaException: MEDIA_UNSUPPORTED : Unrecognized file signature!). Jutro będę stawiał system od nowa ( przymierzam się do tego już parę miesięcy ) i ściągnę nową wersje Javy, może się coś pokicało bo innej możliwości nie widzę. Dzięki za pomoc ;) Jakby co napiszę czy pomogło.

0

Ja używałem Javy 7 update 9 od Oracla, która zawiera w sobie JavęFX 2.2.3.

0

Zainstalowałem nowszą wersję bo miałem JaveFX 2.0.* i teraz mam tą samo co ty i działa bez problemu :) Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1