繁体   English   中英

如何使用VLCJ和JavaFX播放视频文件?

[英]How can I play Video Files using VLCJ and JavaFX?

我知道JavaFX拥有它自己的媒体播放器,但是我不知道它是否可以播放MP4文件。 即使可以,我仍然更喜欢使用VLCJ,因为VLC支持的格式和种类比我在接近目录状态下所能计数的更多。

我遵循了Caprical在他的VLCJ-JavaFX GitHub中发布的示例,但是,确实没有。 它没有错误,但是什么也没做。

查看代码,看来问题出在时间轴事件处理程序中:

private final EventHandler<ActionEvent> nextFrame = new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent t) {
        Memory[] nativeBuffers = mediaPlayerComponent.getMediaPlayer().lock();
        if (nativeBuffers != null) { //<-----This is always NULL so everything in the block is skipped . . . 
            // FIXME there may be more efficient ways to do this...
            // Since this is now being called by a specific rendering time, independent of the native video callbacks being
            // invoked, some more defensive conditional checks are needed
            Memory nativeBuffer = nativeBuffers[0];
            if (nativeBuffer != null) {
                ByteBuffer byteBuffer = nativeBuffer.getByteBuffer(0, nativeBuffer.size());
                BufferFormat bufferFormat = ((DefaultDirectMediaPlayer) mediaPlayerComponent.getMediaPlayer()).getBufferFormat();
                if (bufferFormat.getWidth() > 0 && bufferFormat.getHeight() > 0) {
                    pixelWriter.setPixels(0, 0, bufferFormat.getWidth(), bufferFormat.getHeight(), pixelFormat, byteBuffer, bufferFormat.getPitches()[0]);
                }
            }
        }
        mediaPlayerComponent.getMediaPlayer().unlock();
    };
};

有人建议我拿起日志,但是当我发表这篇文章时,我将陷入昏迷状态(当我回到生活的土地上时,我会看到我可以做些什么来发表)。 如果有更好的方法可以做到这一点,那么如果有人可以将我引导到那里,我将全力以赴。 谢谢...

Github项目上的vlcj-javafx示例工作正常。

您在问题中说vlcj“没有错误,但没有任何作用”。

嗯,有两种方法可以检查在问题中发布的代码中没有显示的错误。

  1. mediaPlayer.playMedia()方法返回一个boolean以说明VLC是否接受了您的MRL-您是否检查了返回值? 请注意,即使此方法返回true,也不表示VLC可以播放您的媒体,但是如果返回false,则表明它不能播放。
  2. 您应该将MediaPlayerEventLister添加到媒体播放器,并提供“ playing()”和“ error()”的实现。 这些回调将异步触发-因为这就是LibVLC的工作方式-只有这样,您才能得出vlcj“不出错”还是“什么都不做”的结论。

我怀疑您的媒体无法启动,可能是因为文件名错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM