vlcj 媒体选项“--no-overlay”不起作用?

vlcj media option "--no-overlay" doesn't work?

我想关闭 vlc 的硬件加速选项,以避免显卡驱动程序错误导致的一些滞后问题。我试图在 prepareMedia 方法中传递该选项。那没有帮助(就像我通过命令行执行此操作时一样:vlc --no-overlay 'path-to-video')。它实际上什至似乎让播放有点滞后。下面是我设置播放器的代码的一部分。我实际上尝试了 playMedia("path-to-video","--no-overlay") 但也没有用。

mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
player = mediaPlayerComponent.getMediaPlayer();
...
player.prepareMedia("path-to-video","--no-overlay");

其中一些选项必须在创建 MediaPlayerFactory 时传递,而不是在播放媒体时传递 - 至于为什么会这样,这就是 LibVLC 的工作方式。

如果您正在使用 EmbeddedMediaPlayerComponent,您可以执行类似这样的操作来提供这些选项:

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
    protected String[] onGetMediaPlayerFactoryArgs() {
        return new String[] {"--no-overlay"};
    }
}

请注意,这将替换 默认的媒体播放器出厂参数,因此您可能还想指定一些其他参数 - 这些是默认值:

protected static final String[] DEFAULT_FACTORY_ARGUMENTS = {
    "--video-title=vlcj video output",
    "--no-snapshot-preview",
    "--quiet-synchro",
    "--sub-filter=logo:marq",
    "--intf=dummy"
};

这就是您设置此类本机 VLC 选项的方式,但此特定选项是否会执行您真正想要的操作(并且没有任何其他副作用)是另一回事。