[英]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“没有错误,但没有任何作用”。
嗯,有两种方法可以检查在问题中发布的代码中没有显示的错误。
mediaPlayer.playMedia()
方法返回一个boolean
以说明VLC是否接受了您的MRL-您是否检查了返回值? 请注意,即使此方法返回true,也不表示VLC可以播放您的媒体,但是如果返回false,则表明它不能播放。 MediaPlayerEventLister
添加到媒体播放器,并提供“ playing()”和“ error()”的实现。 这些回调将异步触发-因为这就是LibVLC的工作方式-只有这样,您才能得出vlcj“不出错”还是“什么都不做”的结论。 我怀疑您的媒体无法启动,可能是因为文件名错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.