2012-11-18 36 views
6

Tôi đã đọc this SO thread và khi tôi đã cố gắng sử dụng mã với một số thay đổi, tôi chỉ nhận được một cửa sổ đen, có thể một số cho tôi biết tôi đang làm gì sai ở đây, tôi chỉ có một lớp học có chức năng chính:Nhúng VLCJ vào 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); 

    } 

} 

Cảm ơn bạn trước.

Trả lời

4

Khi tôi thay đổi url video (hay còn gọi là MRL như Truyền thông ressource Locator) như sau: C:\\MyVideo.mp4 Tôi có video trong cửa sổ.

này discussion đã giúp tôi.

+1

Tôi đã cố gắng tìm ra lý do cho điều này trong nhiều ngày! Cảm ơn bạn –

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

Nhờ điều này, nhưng không có kết quả, cửa sổ chỉ là màu đen! – Adil

1

tôi đã làm một cái gì đó giống như

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");