Java 使用VLCJ创建MediaPlayer时,视频不可播放且为黑屏

Java 使用VLCJ创建MediaPlayer时,视频不可播放且为黑屏,java,swing,video,media-player,vlcj,Java,Swing,Video,Media Player,Vlcj,我正在尝试使用VLCJ将MediaPlayer添加到JPanel。当我运行代码时,框架打开,但没有显示视频和声音。我没有得到任何编译运行时错误。我查看了可显示和可显示方法的输出,它说视频不可播放。但我尝试了所有可能的视频格式 import java.io.*; import java.net.*; import javax.media.CannotRealizeException; import javax.media.Manager; import javax.media.NoPlayerEx

我正在尝试使用VLCJ将MediaPlayer添加到JPanel。当我运行代码时,框架打开,但没有显示视频和声音。我没有得到任何编译运行时错误。我查看了可显示和可显示方法的输出,它说视频不可播放。但我尝试了所有可能的视频格式

import java.io.*;
import java.net.*;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;
import uk.co.caprica.vlcj.player.MediaPlayerFactory;
import java.awt.*;
import javax.swing.*;
import uk.co.caprica.vlcj.player.embedded.videosurface.CanvasVideoSurface;

public class VideoUpload extends JPanel 
{

static String VLCLIBPATH = "C:\\Program Files\\VideoLAN\\VLC";
private MediaPlayerFactory mediaPlayerFactory;
private EmbeddedMediaPlayer mediaPlayer;
private Canvas c;
private JPanel p;
private JFrame frame;
static String url="C:/Users/M.C.Ş/Pictures/video/uwe.3gp";
public static void main( String[] args) {

    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), VLCLIBPATH);
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    JFrame frame = new JFrame();      
    VideoUpload video = new VideoUpload(url);
    frame.add( video );
    frame.setSize( 1300,750 );
    frame.setVisible(true);
    video.play();      

}
public VideoUpload( String url ) {

    url = this.url;  
    c = new Canvas();
    c.setSize(500,500);
    c.setBackground(Color.black);   
    setLayout(new BorderLayout());
    add(c, BorderLayout.CENTER);
    c.setVisible(true);
    setVisible(true);

    mediaPlayerFactory = new MediaPlayerFactory();
    mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
    mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c));  

    System.out.println("is playable " + mediaPlayer.isPlayable() );

}

public void play()
{
    mediaPlayer.playMedia(url);

    System.out.println("is playing " + mediaPlayer.isPlaying() );
}


}

您不能在通过
playMedia()
传递的文件名中使用前斜杠

文件名直接传递给LibVLC中的本机API方法,正是该本机方法尝试完全按照您指定的方式打开文件名

使用前向斜杠是一种Java约定,它不适用于本机API调用(至少在Windows上不适用)