Java 在JPanel中嵌入VLCJ
我已经阅读过,当我尝试使用代码进行一些更改时,我得到的只是一个黑色窗口,有人能告诉我我在这里做错了什么吗,我只有一个带有主函数的类:Java 在JPanel中嵌入VLCJ,java,jpanel,vlcj,Java,Jpanel,Vlcj,我已经阅读过,当我尝试使用代码进行一些更改时,我得到的只是一个黑色窗口,有人能告诉我我在这里做错了什么吗,我只有一个带有主函数的类: 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.capr
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);
}
}
提前感谢。当我将视频url(也称为MRL作为媒体资源定位器)更改为以下内容时:
C:\\MyVideo.mp4
我在窗口中看到了视频
//Creating the canvas and adding it to the panel :
canvas = new WindowsCanvas();
canvas.setSize(700, 500);
panel.add(canvas);
这对我有帮助。我做了类似的事情
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");
EmbeddedMediaPlayerComponent mediaPlayerComponent=新的EmbeddedMediaPlayerComponent();
EmbeddedMediaPlayer EmbeddedMediaPlayer=mediaPlayerComponent.getMediaPlayer();
Canvas videoSurface=新画布();
videoSurface.setBackground(颜色:黑色);
videoSurface.setSize(800600);
List vlcArgs=new ArrayList();
add(“--无插件缓存”);
添加(“--无视频标题显示”);
添加(“--无快照预览”);
MediaPlayerFactory MediaPlayerFactory=新的MediaPlayerFactory(vlcArgs.toArray(新字符串[vlcArgs.size()]);
mediaPlayerFactory.setUserAgent(“vlcj测试播放器”);
embeddedMediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(videoSurface));
embeddedMediaPlayer.setPlaySubItems(true);
最终PlayerControlsPanel controlsPanel=新的PlayerControlsPanel(嵌入式MediaPlayer);
PlayerServiceDeoAdjustPanel videoAdjustPanel=新的PlayerServiceDeoAdjustPanel(嵌入式媒体播放器);
//mediaPlayerComponent.getMediaPlayer().playMedia(Constant.PATH_ROOT+Constant.PATH_MEDIA+“tmp.mp4”);
JFrame mainFrame=新JFrame();
mainFrame.setLayout(新的BorderLayout());
主机。背景(颜色。黑色);
mainFrame.add(videoSurface、BorderLayout.CENTER);
mainFrame.add(controlsPanel,BorderLayout.SOUTH);
mainFrame.add(videoAdjustPanel,BorderLayout.EAST);
//创建一个按钮,单击该按钮时将隐藏面板。
mainFrame.pack();
mainFrame.setVisible(true);
embeddedMediaPlayer.playMedia(“tmp.mp4”);
谢谢,但没有结果,只有黑色窗口!这几天来我一直在努力寻找原因!谢谢你,你用哪个图书馆?