Videospeler maken met Java

Ik moet een videospeler maken met Java voor mijn project. Ik heb al veel voorbeelden op internet bekeken. Sommige draaien, maar laten geen scherm zien, ik hoor alleen het geluid van de video. Help me alsjeblieft dit op te lossen…

Ik gebruik de onderstaande import

import javax.media.*;

BEWERKEN:
Hieronder is de code die ik gebruik:

import java.awt.*;
 import java.awt.event.*;
 import java.io.*;
 import javax.swing.*;
 import javax.media.*;
 public class MediaPlayerDemo extends JFrame 
 {
     private Player player;
     private File file;
     public MediaPlayerDemo()
     {
         super( "Demonstrating the Java Media Player" );
         JButton openFile = new JButton( "Open file to play" );
         openFile.addActionListener( new ActionListener() 
         {
             public void actionPerformed( ActionEvent e )
             {
                 openFile();
                 createPlayer();
             }
         });
         getContentPane().add( openFile, BorderLayout.NORTH );
         setSize( 300, 300 );
         show();
     }
     private void openFile()
     {
         JFileChooser fileChooser = new JFileChooser();
         fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );
         int result = fileChooser.showOpenDialog( this );
         // user clicked Cancel button on dialog
         if ( result == JFileChooser.CANCEL_OPTION )
             file = null;
         else
             file = fileChooser.getSelectedFile();
     }
     private void createPlayer()
     {
         if ( file == null )
             return;
         removePreviousPlayer();
         try 
         {
             // create a new player and add listener
             player = Manager.createPlayer( file.toURL() );
             player.addControllerListener( new EventHandler() );
             player.start(); // start player
         }
         catch ( Exception e )
         {
             JOptionPane.showMessageDialog( this, "Invalid file or location", "Error loading file",
             JOptionPane.ERROR_MESSAGE );
         }
     }
     private void removePreviousPlayer()
     {
         if ( player == null )
             return;
         player.close();
         Component visual = player.getVisualComponent();
         Component control = player.getControlPanelComponent();
         Container c = getContentPane();
         if ( visual != null )
             c.remove( visual );
         if ( control != null )
             c.remove( control );
     }
     public static void main(String args[])
     {
         MediaPlayerDemo app = new MediaPlayerDemo();
         app.addWindowListener( new WindowAdapter() 
         {
             public void windowClosing( WindowEvent e )
             {
                 System.exit(0);
             }
         });
     }
     // inner class to handler events from media player
     private class EventHandler implements ControllerListener 
     {
         public void controllerUpdate( ControllerEvent e ) 
         {
             if ( e instanceof RealizeCompleteEvent ) 
             {
                 Container c = getContentPane();
                 // load Visual and Control components if they exist
                 Component visualComponent = player.getVisualComponent();
                 if ( visualComponent != null )
                     c.add( visualComponent, BorderLayout.CENTER );
                 Component controlsComponent = player.getControlPanelComponent();
                 if ( controlsComponent != null )
                     c.add( controlsComponent, BorderLayout.SOUTH );
                 c.doLayout();
             }
         }
     }
 }

Antwoord 1, Autoriteit 100%

Ik gebruikte VLCJ en het werkte soepel. Het is Java-binding aan VLCJ-speler en het goede ding dat u geen schijven hoeft te bieden sinds VLCJ al ze allemaal in binaire distributie omvat.

Geef het, er is voorbeeld van al werkende speler gebouwd voor u!


Antwoord 2, Autoriteit 43%

Probeer een Javafx MediaPlayer:

Bruikbare codecs:

  • AUDIO: MP3; AIFF met ongecomprimeerde PCM; WAV met niet-gecomprimeerde PCM; MPEG-4 Multimedia-container met geavanceerde audiocodering (AAC) AUDIO
  • Video: FLV met VP6-video en MP3-audio; MPEG-4 Multimedia
    Container met H.264 / AVC (geavanceerde videocodering) videocompressie.

Hier een voorbeeld van Oracle:

import javafx.application.Application;
import javafx.collections.ListChangeListener;
import javafx.collections.MapChangeListener;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaView;
import javafx.scene.media.Track;
import javafx.stage.Stage;
/**
 * A sample media player which loops indefinitely over the same video
 */
public class MediaPlayer extends Application {
private static final String MEDIA_URL = "http://someserver/somedir/somefile.mp4";
private static String arg1;
    @Override public void start(Stage stage) {
        stage.setTitle("Media Player");
// Create media player
        Media media = new Media((arg1 != null) ? arg1 : MEDIA_URL);
        javafx.scene.media.MediaPlayer mediaPlayer = new javafx.scene.media.MediaPlayer(media);
        mediaPlayer.setAutoPlay(true);
        mediaPlayer.setCycleCount(javafx.scene.media.MediaPlayer.INDEFINITE);
// Print track and metadata information
        media.getTracks().addListener(new ListChangeListener<Track>() {
public void onChanged(Change<? extends Track> change) {
                System.out.println("Track> "+change.getList());
            }
        });
        media.getMetadata().addListener(new MapChangeListener<String,Object>() {
public void onChanged(MapChangeListener.Change<? extends String, ? extends Object> change) {
                System.out.println("Metadata> "+change.getKey()+" -> "+change.getValueAdded());
            }
        });
// Add media display node to the scene graph
        MediaView mediaView = new MediaView(mediaPlayer);
        Group root = new Group();
        Scene scene = new Scene(root,800,600);
        root.getChildren().add(mediaView);
        stage.setScene(scene);
        stage.show();
    }
public static void main(String[] args) {
if (args.length > 0) {
            arg1 = args[0];
        }
        Application.launch(args);
    }
}

https://blogs.oracle.com/javafx/entry/mpeg_4_multimedia_support_in


Antwoord 3

Java Media Framework kan worden gebruikt om multimediatoepassingen zoals video- en audiospelers te maken.


Antwoord 4

Hier is de werkende code.

package New;
import java.net.URL;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.effect.DropShadow;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaPlayer.Status;
import javafx.scene.media.MediaView;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class FxMediaExample2 extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }
    @Override
    public void start(Stage stage) {
        // Locate the media content in the CLASSPATH
        URL mediaUrl = getClass().getResource("Test.mp4");
        String mediaStringUrl = mediaUrl.toExternalForm();
        // Create a Media
        Media media = new Media(mediaStringUrl);
        // Create a Media Player
        final MediaPlayer player = new MediaPlayer(media);
        // Automatically begin the playback
        player.setAutoPlay(true);
        // Create a 400X300 MediaView
        MediaView mediaView = new MediaView(player);
        mediaView.setFitWidth(400);
        mediaView.setFitHeight(300);
        mediaView.setSmooth(true);
        mediaView.setLayoutX(200);
        mediaView.setLayoutY(200);
        // Create the DropShadow effect
        DropShadow dropshadow = new DropShadow();
        dropshadow.setOffsetY(5.0);
        dropshadow.setOffsetX(5.0);
        dropshadow.setColor(Color.RED);
        mediaView.setEffect(dropshadow);
        Rectangle rect4 = new Rectangle(35, 55, 95, 25);
        rect4.setFill(Color.RED);
        rect4.setStroke(Color.BLACK);
        rect4.setStrokeWidth(1);
        // Create the HBox
        // HBox controlBox = new HBox(5, null, null);
        // Create the VBox
        VBox root = new VBox(1, mediaView);
        GridPane gridpane = new GridPane();
        gridpane.setPadding(new Insets(95));
        gridpane.setHgap(1);
        gridpane.setVgap(10);
        GridPane.setHalignment(rect4, HPos.CENTER);
        Group grp = new Group();
        gridpane.add(root, 1, 1);
        grp.getChildren().add(gridpane);
        // Create the Scene
        Scene scene = new Scene(grp);
        // Add the scene to the Stage
        stage.setScene(scene);
        // Set the title of the Stage
        stage.setTitle("A simple Media Example");
        // Display the Stage
        stage.show();
    }
}

Other episodes