2017-05-15 3 views
0

VLCJを使用してJPanelにMediaPlayerを追加しようとしています。コードを実行するとフレームが開きますが、表示されるビデオやサウンドはありません。コンパイル時にエラーが発生することはありません。 isPlayableメソッドとisPlayingメソッドの出力を調べました。ビデオは再生できません。しかし、私は可能なすべてのビデオフォーマットを試しました。VLCJを使用して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()); 
} 


} 

答えて

0

playMedia()で渡すファイル名にはスラッシュを使用できません。

ファイル名は、LibVLCのネイティブAPIメソッドに直接渡されます。ネイティブメソッドは、指定したとおりにファイル名を開こうとするネイティブメソッドです。

スラッシュの使用はJavaの規約であり、ネイティブAPI呼び出し(少なくともWindowsでは使用できません)では機能しません。

関連する問題