Page 1 of 1

why i m getting libvlc_Error while playing video in Java ?

Posted: 18 Jul 2012 16:39
by jobs
Hi , i m new to vlcj i m using "vlcj-2.1.0" for my Java application ..at first when i run this simple code

Code: Select all

/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package flvjdemo; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.SwingUtilities; import uk.co.caprica.vlcj.binding.internal.libvlc_media_t; import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; import uk.co.caprica.vlcj.player.MediaPlayer; import uk.co.caprica.vlcj.player.MediaPlayerEventListener; public class FLVJDemo implements MediaPlayerEventListener{ private JFrame frame; private EmbeddedMediaPlayerComponent embeddedMediaPlayerComponent; public FLVJDemo() { frame = new JFrame("test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); embeddedMediaPlayerComponent = new EmbeddedMediaPlayerComponent(); frame.setContentPane( embeddedMediaPlayerComponent ); frame.setSize( new Dimension( 500,400 )); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void startPlayer( String mri ){ //embeddedMediaPlayerComponent.getMediaPlayer().playMedia(mri, "" ); MediaPlayer mediaPlayer = embeddedMediaPlayerComponent.getMediaPlayer(); //boolean playMedia = mediaPlayer.playMedia(mri, ""); // mediaPlayer.addMediaOptions("video-filter=sharpen{sigma=1.5}"); mediaPlayer.addMediaPlayerEventListener(this); boolean startMedia = mediaPlayer.startMedia(mri, ""); System.out.println( startMedia); mediaPlayer.play(); } public static void main(String[] args) { // TODO code application logic here SwingUtilities.invokeLater( new Runnable() { @Override public void run() { new flvjdemo.FLVJDemo().startPlayer("file://C:/Users/Admin/Desktop/imgToVideo/in/F8--Mark-Zuckerberg-unveils-Facebook-Timeline[www.savevid.com].flv"); } }); } @Override public void mediaChanged(MediaPlayer mediaPlayer, libvlc_media_t media, String mrl) { System.out.println("media changed"); } @Override public void opening(MediaPlayer mediaPlayer) { System.out.println("media openeing"); } @Override public void buffering(MediaPlayer mediaPlayer, float newCache) { System.out.println("media buffering..."); } @Override public void playing(MediaPlayer mediaPlayer) { System.out.println("playing"); } @Override public void paused(MediaPlayer mediaPlayer) { } @Override public void stopped(MediaPlayer mediaPlayer) { } @Override public void forward(MediaPlayer mediaPlayer) { } @Override public void backward(MediaPlayer mediaPlayer) { } @Override public void finished(MediaPlayer mediaPlayer) { System.out.println("finished playing"); } @Override public void timeChanged(MediaPlayer mediaPlayer, long newTime) { } @Override public void positionChanged(MediaPlayer mediaPlayer, float newPosition) { } @Override public void seekableChanged(MediaPlayer mediaPlayer, int newSeekable) { } @Override public void pausableChanged(MediaPlayer mediaPlayer, int newSeekable) { } @Override public void titleChanged(MediaPlayer mediaPlayer, int newTitle) { } @Override public void snapshotTaken(MediaPlayer mediaPlayer, String filename) { } @Override public void lengthChanged(MediaPlayer mediaPlayer, long newLength) { } @Override public void videoOutput(MediaPlayer mediaPlayer, int newCount) { System.err.println( mediaPlayer.getChapter() + " " + newCount ); } @Override public void error(MediaPlayer mediaPlayer) { System.err.println( "err " + mediaPlayer.getMediaState() + " " + mediaPlayer.getVideoDescriptions()); } @Override public void mediaMetaChanged(MediaPlayer mediaPlayer, int metaType) { } @Override public void mediaSubItemAdded(MediaPlayer mediaPlayer, libvlc_media_t subItem) { } @Override public void mediaDurationChanged(MediaPlayer mediaPlayer, long newDuration) { System.out.println("media durtaion changed " + newDuration); } @Override public void mediaParsedChanged(MediaPlayer mediaPlayer, int newStatus) { } @Override public void mediaFreed(MediaPlayer mediaPlayer) { } @Override public void mediaStateChanged(MediaPlayer mediaPlayer, int newState) { } @Override public void newMedia(MediaPlayer mediaPlayer) { } @Override public void subItemPlayed(MediaPlayer mediaPlayer, int subItemIndex) { } @Override public void subItemFinished(MediaPlayer mediaPlayer, int subItemIndex) { } @Override public void endOfSubItems(MediaPlayer mediaPlayer) { } }
it throws an exception for lbvlc and libvlc_core is not found then i added this code as a Virtual machine argument

Code: Select all

-Djna.library.path="C:\Program Files\VideoLAN\VLC"
then the exception was fixed but now the problem is i m getting a blank black screen (JFrame) and video is not playing , when i add listener i come to know that it throws an error saying

Code: Select all

libvlc_Error
I have no clue what it means please help , i m using windows 7 , AMD cpu
thanks

Re: why i m getting libvlc_Error while playing video in Java

Posted: 18 Jul 2012 18:53
by sherington
You should probably post this in the libvlc forum, not the Windows media player trouble shooting forum.

Post a more complete log.

Start your app with -Dvlcj.log=DEBUG.

If your "error" callback is firing, most likely the media failed to open for some reason. That reason will be in the vlc log.

Have a look in the console window.

If there is no useful console output, maybe pass "-vvv" to the media player factory - since you're using the media player component you will have to override onGetMediaPlayerFactoryArgs() to do that.

Re: why i m getting libvlc_Error while playing video in Java

Posted: 18 Jul 2012 20:03
by jobs
You should probably post this in the libvlc forum, not the Windows media player trouble shooting forum.

Post a more complete log.

Start your app with -Dvlcj.log=DEBUG.

If your "error" callback is firing, most likely the media failed to open for some reason. That reason will be in the vlc log.

Have a look in the console window.

If there is no useful console output, maybe pass "-vvv" to the media player factory - since you're using the media player component you will have to override onGetMediaPlayerFactoryArgs() to do that.
thanks for the reply but i have fixed it , fix was just to use file:/// instead of file://
but now my problem is i have ffmpeg which is streaming video and i want vlcj to play it but the same thing is happening here, the frame is just blank
i m using this code please take a look at it please

Code: Select all

//* * To change this template, choose Tools | Templates * and open the template in the editor. */ package flvjdemo; import java.awt.Dimension; import javax.swing.JFrame; import javax.swing.SwingUtilities; import uk.co.caprica.vlcj.binding.internal.libvlc_media_t; import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; import uk.co.caprica.vlcj.player.MediaPlayer; import uk.co.caprica.vlcj.player.MediaPlayerEventListener; public class StreamingPlayer implements MediaPlayerEventListener{ private JFrame frame; private EmbeddedMediaPlayerComponent embeddedMediaPlayerComponent; public StreamingPlayer() { frame = new JFrame("test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); embeddedMediaPlayerComponent = new EmbeddedMediaPlayerComponent(); frame.setContentPane( embeddedMediaPlayerComponent ); frame.setSize( new Dimension( 500,400 )); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void startStreaming( String mrl, String options ){ MediaPlayer mediaPlayer = embeddedMediaPlayerComponent.getMediaPlayer(); //boolean playMedia = mediaPlayer.playMedia(mri, ""); // mediaPlayer.addMediaOptions("video-filter=sharpen{sigma=1.5}"); mediaPlayer.addMediaPlayerEventListener(this); boolean startMedia = mediaPlayer.startMedia(mrl,options); mediaPlayer.play(); } public static void main(String[] args) { // TODO code application logic here SwingUtilities.invokeLater( new Runnable() { // String mrl = "file:///C:/Users/Admin/Desktop/imgToVideo/in/abc.mpeg"; // String url = "udp://111.119.220.36:5555"; String httpUrl = "http://www.youtube.com/watch?v=x1dmdWJDHP4&feature=g-feat"; String screen = "screen://"; String serverAddress = "111.119.227.99"; String serverPort = "5555"; @Override public void run() { StringBuilder sb = new StringBuilder(60); sb.append(":sout=#duplicate{dst=std{access=udp,mux=ts,"); sb.append("dst="); sb.append(serverAddress); sb.append(':'); sb.append(serverPort); sb.append("}}"); new flvjdemo.StreamingPlayer().startStreaming(screen, sb.toString()); } }); } @Override public void mediaChanged(MediaPlayer mediaPlayer, libvlc_media_t media, String mrl) { System.out.println("media changed"); } @Override public void opening(MediaPlayer mediaPlayer) { System.out.println("media openeing"); } @Override public void buffering(MediaPlayer mediaPlayer, float newCache) { System.out.println("media buffering..." + newCache); } @Override public void playing(MediaPlayer mediaPlayer) { System.out.println("playing"); } @Override public void paused(MediaPlayer mediaPlayer) { } @Override public void stopped(MediaPlayer mediaPlayer) { } @Override public void forward(MediaPlayer mediaPlayer) { } @Override public void backward(MediaPlayer mediaPlayer) { } @Override public void finished(MediaPlayer mediaPlayer) { System.out.println("finished playing"); } @Override public void timeChanged(MediaPlayer mediaPlayer, long newTime) { } @Override public void positionChanged(MediaPlayer mediaPlayer, float newPosition) { } @Override public void seekableChanged(MediaPlayer mediaPlayer, int newSeekable) { } @Override public void pausableChanged(MediaPlayer mediaPlayer, int newSeekable) { } @Override public void titleChanged(MediaPlayer mediaPlayer, int newTitle) { } @Override public void snapshotTaken(MediaPlayer mediaPlayer, String filename) { } @Override public void lengthChanged(MediaPlayer mediaPlayer, long newLength) { } @Override public void videoOutput(MediaPlayer mediaPlayer, int newCount) { System.err.println( mediaPlayer.getChapter() + " " + newCount ); } @Override public void error(MediaPlayer mediaPlayer) { System.err.println( "err " + mediaPlayer.getMediaState() + " " + mediaPlayer.getVideoDescriptions()); } @Override public void mediaMetaChanged(MediaPlayer mediaPlayer, int metaType) { } @Override public void mediaSubItemAdded(MediaPlayer mediaPlayer, libvlc_media_t subItem) { } @Override public void mediaDurationChanged(MediaPlayer mediaPlayer, long newDuration) { System.out.println("media durtaion changed " + newDuration); } @Override public void mediaParsedChanged(MediaPlayer mediaPlayer, int newStatus) { } @Override public void mediaFreed(MediaPlayer mediaPlayer) { } @Override public void mediaStateChanged(MediaPlayer mediaPlayer, int newState) { } @Override public void newMedia(MediaPlayer mediaPlayer) { } @Override public void subItemPlayed(MediaPlayer mediaPlayer, int subItemIndex) { } @Override public void subItemFinished(MediaPlayer mediaPlayer, int subItemIndex) { } @Override public void endOfSubItems(MediaPlayer mediaPlayer) { } }

Re: why i m getting libvlc_Error while playing video in Java

Posted: 18 Jul 2012 20:46
by sherington
Same comment as before: post logs, otherwise I doubt anyone can help you.