2012-11-18 10 views
6

Ich habe gelesen this SO thread und wenn ich versucht habe, den Code mit einigen Änderungen zu verwenden, bekomme ich nur ein schwarzes Fenster, kann jemand mir sagen, was ich hier falsch mache, habe ich nur einen Klasse mit Hauptfunktion:Einbetten von VLCJ in JPanel

import java.awt.Color; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

import com.sun.jna.NativeLibrary; 

import uk.co.caprica.vlcj.player.MediaPlayerFactory; 
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; 
import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface; 
import uk.co.caprica.vlcj.runtime.windows.WindowsCanvas; 

public class Canvas_Demo { 

    // Create a media player factory 
    private MediaPlayerFactory mediaPlayerFactory; 

    // Create a new media player instance for the run-time platform 
    private EmbeddedMediaPlayer mediaPlayer; 

    private JPanel panel; 
    private WindowsCanvas canvas; 
    private JFrame frame; 

    //Constructor 
    public Canvas_Demo(String url){ 

     //Creating a panel that while contains the canvas 
     panel = new JPanel(); 
     panel.setBackground(Color.BLACK); 

     //Creating the canvas and adding it to the panel : 
     canvas = new WindowsCanvas(); 
     panel.add(canvas); 
     panel.revalidate(); 
     panel.repaint(); 

     //Creation a media player : 
     mediaPlayerFactory = new MediaPlayerFactory(); 
     mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(); 
     CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas); 
     mediaPlayer.setVideoSurface(videoSurface); 

     //Construction of the jframe : 
     frame = new JFrame("Demo with Canvas AWT"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setLocation(100, 100); 
     frame.setSize(700, 500); 

     //Adding the panel to the 
     frame.add(panel); 
     frame.setVisible(true); 

     //Playing the video 
     mediaPlayer.playMedia(url); 


    } 
    //Main function : 
    public static void main(String[] args) { 
     NativeLibrary.addSearchPath("libvlc", "C:/Program Files/VideoLAN/VLC"); 

     final String url = "C:/MyVideo.mp4"; 

     new Canvas_Demo(url); 

    } 

} 

Vielen Dank im Voraus.

Antwort

4

Wenn ich die Video-URL ändern, um diese (auch MRL als Medien-Ressource Locator genannt): C:\\MyVideo.mp4 bekam ich das Video im Fenster.

dieser discussion hat mir geholfen.

+1

Ich habe seit Tagen versucht, den Grund dafür zu finden! Vielen Dank –

1
//Creating the canvas and adding it to the panel : 
canvas = new WindowsCanvas(); 
canvas.setSize(700, 500); 
panel.add(canvas); 
+0

Danke, aber kein Ergebnis, nur schwarz-Fenster! – Adil

1

Ich habe so etwas wie diese

EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent(); 
     EmbeddedMediaPlayer embeddedMediaPlayer = mediaPlayerComponent.getMediaPlayer(); 

     Canvas videoSurface = new Canvas(); 
     videoSurface.setBackground(Color.black); 
     videoSurface.setSize(800, 600); 

     List<String> vlcArgs = new ArrayList<String>(); 

     vlcArgs.add("--no-plugins-cache"); 
     vlcArgs.add("--no-video-title-show"); 
     vlcArgs.add("--no-snapshot-preview"); 

     MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(vlcArgs.toArray(new String[vlcArgs.size()])); 
     mediaPlayerFactory.setUserAgent("vlcj test player"); 
     embeddedMediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(videoSurface)); 
     embeddedMediaPlayer.setPlaySubItems(true); 

     final PlayerControlsPanel controlsPanel = new PlayerControlsPanel(embeddedMediaPlayer); 
     PlayerVideoAdjustPanel videoAdjustPanel = new PlayerVideoAdjustPanel(embeddedMediaPlayer); 

//   mediaPlayerComponent.getMediaPlayer().playMedia(Constant.PATH_ROOT + Constant.PATH_MEDIA + "tmp.mp4"); 
     JFrame mainFrame = new JFrame(); 
     mainFrame.setLayout(new BorderLayout()); 
     mainFrame.setBackground(Color.black); 
     mainFrame.add(videoSurface, BorderLayout.CENTER); 
     mainFrame.add(controlsPanel, BorderLayout.SOUTH); 
     mainFrame.add(videoAdjustPanel, BorderLayout.EAST); 

     //create a button which will hide the panel when clicked. 
     mainFrame.pack(); 
     mainFrame.setVisible(true); 

     embeddedMediaPlayer.playMedia("tmp.mp4");