我花了一点时间研究是否可以在Java应用程序中绘制VLCJ电影。我发现了一些相互矛盾的建议,有些说这是不可能的,还有一些引用了在oracle.com上移动的文章。
有人能澄清是否有可能画出像矩形/直线这样的Java2D图形,这些图形也有透明的背景,这样当图形出现在屏幕上时,可以看到下面的视频流吗?
如果vlcj不可能做到这一点,那么对于linux和windows兼容的媒体播放器来说,允许在播放视频流上进行注释有什么好的选择呢?请注意,我不必局限于Java,但我可以在多个平台上重用已开发的绘图例程将是理想的选择。

最佳答案

是的,你能做到。对于普通的硬件渲染视频播放器,您需要至少有Java6U10(最好是7),并通过在VLC画布上覆盖一个透明的JWindow来实现这一点(向画布添加事件以检查位置/大小的更新,然后相应地移动覆盖的窗口并不太难)。
另一种不涉及使用覆盖窗口的方法是使用DirectMediaPlayer,在这里您可以直接访问帧缓冲区(因此可以对像素执行您喜欢的操作,包括将它们包装为围绕3d对象的纹理等)。以你选择的方式筛选。这是最灵活的方法,但带来的缺点是,如果你不太注意你的实现,你就失去了所有的GPU加速,最终削弱了CPU,尤其是高清视频。
如果一个简单的覆盖可以做到这一点,我会首先尝试,如果必须的话,只需要使用DirectMediaPlayer

关于java - Java VLCJ Canvas 和带有透明背景的绘图ontop,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14144645/

10-10 00:09