某些视频的VLCJ黑屏(有声)

时间:2014-04-12 10:27:55

标签: video vlcj

我的某些视频有黑屏(有声)问题。从不为非工作视频触发“videoOutput”事件。它是在为所有视频工作了几个月后开始的,我花了最后一天来研究这个问题。在检查日志后,我开始认为它可能是vlcj中的一个错误。

我正在运行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)

1 个答案:

答案 0 :(得分:0)

我们在黑色vlcj屏幕上遇到了同样的问题。我们的问题是,播放2个视频后,屏幕变黑,永远不会再来。但如果我们跳过两个视频,那么它就可以了。我在3个不同的系统上运行相同的代码,在一个系统上代码工作正常,但对其他系统来说效果不佳。

一个系统和其他系统的区别仅在于Ram。所以我认为这是系统资源问题。只需清除所有缓存的ram,然后尝试。我希望它能奏效。

在不同的系统上尝试相同的代码然后查看。因为我想在播放vlcj时看到系统资源的使用情况。

我尝试了800 x 600屏幕分辨率并增加了我的内存然后它运行顺利。