2017-05-15 3 views
0

J'essaie d'ajouter un MediaPlayer à un JPanel en utilisant VLCJ. Quand j'exécute le code, le cadre s'ouvre mais il n'y a pas de vidéo affichée et pas de son. Je ne reçois aucune erreur de compilation-exécution. J'ai vérifié les sorties des méthodes isPlayable et isPlaying qui indiquent que les vidéos ne sont pas lisibles. Mais j'ai essayé tous les formats vidéo possibles.La vidéo n'est pas lisible et l'écran noir lors de l'utilisation de VLCJ pour créer MediaPlayer

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()); 
} 


} 

Répondre

0

Vous ne pouvez pas utiliser des barres obliques en avant dans le nom du fichier que vous passez par playMedia().

Le nom de fichier est transmis directement à une méthode API native dans LibVLC, c'est cette méthode native qui essaie d'ouvrir le nom de fichier exactement comme vous l'avez spécifié. L'utilisation de barres obliques est une convention Java et ne fonctionnera pas avec les appels d'API natifs (du moins sous Windows).