我对一些视频的黑屏(有声音)有问题。非工作视频永远不会触发videoOutput事件。在为所有视频工作了几个月后,它于昨天开始,我花了最后一天来检查这个问题。在检查了日志之后,我开始认为这可能是vlcj中的一个bug。
我运行的是Ubuntu 12.10和VLC 2.2.0,目前我运行的是vlcj 3.0.1,但我已经尝试了几个不同的版本。我测试过的所有视频都是mp4格式的,而且以前都是有效的。
下面我提供了一个代码示例,以及非工作视频和工作视频的日志之间的区别。
代码示例:
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
//Get player
EmbeddedMediaPlayerComponent m = new EmbeddedMediaPlayerComponent();
//Set gui components
getContentPane().add(m);
//Set JFrame settings
this.setSize(500,500);
this.validate();
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Play media
m.getMediaPlayer().playMedia(configuration.getVideoURI());
//Enable overlay
m.getMediaPlayer().enableOverlay(true);这可能不重要,但重要的是事件的顺序是不同的。非工作和工作情况之间唯一的不同之处(关于输入和系统)是两个不同的视频,我将视频规格缩小到只有分辨率不同,如果这会有任何影响的话。非工作: 854 x 480,工作:(480 x 338和多个其他)。
日志的不同部分:
Non-working:
vlcj: (DefaultMediaPlayer.java:1958) | DEBUG | mediaChanged(mediaPlayer=uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer@1f966d18,media=native@0x7fc784090c30 (uk.co.caprica.vlcj.binding.internal.libvlc_media_t@84098bf7),mrl=file:///home/erik/Videos/top10exp.mp4)
vlcj: (DefaultMediaPlayer.java:1962) | DEBUG | Raising event for new media
vlcj: (DefaultMediaPlayer.java:704) | DEBUG | play()
vlcj: (DefaultEmbeddedMediaPlayer.java:314) | DEBUG | onBeforePlay()
vlcj: (DefaultEmbeddedMediaPlayer.java:151) | DEBUG | attachVideoSurface()
vlcj: (CanvasVideoSurface.java:67) | DEBUG | attach()
vlcj: (CanvasVideoSurface.java:70) | DEBUG | componentId=81788948
vlcj: (LinuxVideoSurfaceAdapter.java:39) | DEBUG | attach(componentId=81788948)
vlcj: (CanvasVideoSurface.java:72) | DEBUG | video surface attached
vlcj: (DefaultMediaPlayer.java:707) | DEBUG | after play
vlcj: (DefaultEmbeddedMediaPlayer.java:238) | DEBUG | enableOverlay(enable=true)
Working:
vlcj: (DefaultMediaPlayer.java:704) | DEBUG | play()
vlcj: (DefaultEmbeddedMediaPlayer.java:314) | DEBUG | onBeforePlay()
vlcj: (DefaultEmbeddedMediaPlayer.java:151) | DEBUG | attachVideoSurface()
vlcj: (CanvasVideoSurface.java:67) | DEBUG | attach()
vlcj: (CanvasVideoSurface.java:70) | DEBUG | componentId=81788948
vlcj: (LinuxVideoSurfaceAdapter.java:39) | DEBUG | attach(componentId=81788948)
vlcj: (CanvasVideoSurface.java:72) | DEBUG | video surface attached
vlcj: (DefaultMediaPlayer.java:1958) | DEBUG | mediaChanged(mediaPlayer=uk.co.caprica.vlcj.player.embedded.DefaultEmbeddedMediaPlayer@33da7214,media=native@0x7f1c9c090b50 (uk.co.caprica.vlcj.binding.internal.libvlc_media_t@9c098a6c),mrl=file:///home/erik/Videos/summer1.mp4)
vlcj: (DefaultMediaPlayer.java:1962) | DEBUG | Raising event for new media
vlcj: (DefaultMediaPlayer.java:707) | DEBUG | after play
vlcj: (DefaultEmbeddedMediaPlayer.java:238) | DEBUG | enableOverlay(enable=true)发布于 2014-07-08 21:59:54
我们在vlcj黑屏上也遇到了同样的问题。我们的问题是,在播放了2个视频之后,屏幕变黑,再也不会出现了。但是如果我们跳过两个视频,那么它是有效的。我在3个不同的系统上运行相同的代码,在一个系统上,代码工作得很好,但在其他系统上却不能很好地工作。
一个系统和其他系统的区别只是Ram。所以我认为这是系统资源的问题。只需清除所有缓存的ram,然后尝试。我希望它能起作用。
在不同的系统上尝试相同的代码,然后查看。因为我想在播放vlcj时查看系统资源的使用情况。
我尝试了800 x 600的屏幕分辨率,并增加了我的内存,然后它就可以顺利地工作了。
https://stackoverflow.com/questions/23029138
复制相似问题