VLCJ 从单个 java 程序控制多个音频文件

VLCJ controlling multiple audio files from a single java program

我想通过 vlcj(旧版本 3.10.1)从单个 java 进程播放多个音频文件。下面是我编写的用于播放来自两个文件的音频的 java 代码片段:-

NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "video-plugins");
Native.load(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
for (int i = 0; i < 2; i++) {
            List<String> vlcArgs = new ArrayList<String>();
            vlcArgs.add("--no-video");
            MediaPlayerFactory factory = new MediaPlayerFactory(vlcArgs);
            MediaPlayer mediaPlayer = factory.newHeadlessMediaPlayer();
            if (i == 0)
                mediaPlayer.startMedia("D:\a.mp4");
            else
                mediaPlayer.startMedia("D:\b.mp4");
            mediaPlayer.setVolume(10 * (i + 10));
        }
        Thread.currentThread().join(); 

在此示例程序中,我正在播放来自两个文件的音频,并希望从 windows 控制面板声音部分分别控制它们(静音、取消静音、更改单个文件的音频音量),但我只看到windows 10 音量混合器中的一个“VLC 媒体播放器”。(见下图)

我认为这是由于播放两个文件的音频时使用了同一个 MediaPlayerFactory 实例,然后我调整了 MediaPlayerFactory 但无济于事,我在 windows 10 卷中只看到一个“VLC 媒体播放器”混合器。如果我在 windows 10 中更改“VLC 媒体播放器”的音量,它会对两个文件的音频进行操作。

有没有办法通过来自单个 java 程序的 vlcj 单独播放这两个文件,以便可以单独控制它们?

虽然,我可以 运行 来自两个不同 java 程序的两个文件,它会在 windows 声音部分显示两个“VLC 媒体播放器”,但这不是我想要的想。我想通过 vlcj.

从单个 java 程序控制多个文件

您使用的 VLC/LibVLC 版本 (3.x) 无法完成此操作。

同一进程中的所有本机媒体播放器实例共享相同的音频控件。

不过我听说这可能取决于正在使用的音频输出插件,但是 Linux 我从未亲眼见过这项工作。

即将推出的 VLC/LibVLC 4.x 的早期测试提供了一些希望,将来您实际上可以获得单独的音频控件,但在撰写此答案时,该版本的 VLC 可能仍然是有点远了。

简而言之,这里没有您可以“解决”的问题。

您可以 运行 多个媒体播放器在不同的进程中并以某种方式控制它们,但这并非微不足道。