有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我想通过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,但没有效果,我在Windows10混音器中只看到一个“VLC媒体播放器”。如果我在windows 10中从“VLC Media Player”更改音量,它会对两个文件的音频执行操作

有没有一种方法可以通过vlcj从单个java程序分别播放这两个文件,以便它们可以单独控制enter image description here

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


共 (1) 个答案

  1. # 1 楼答案

    这不能用您正在使用的VLC/LibVLC版本(3.x)来完成

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

    不过,我听说这可能取决于正在使用的音频输出插件,但在Linux上,我个人从未见过这种工作

    即将到来的VLC/LibVLC 4的早期测试。x提供了一些希望,在未来,你实际上会得到单独的音频控制,但在写下这个答案时,VLC的版本可能还有一段路要走

    简而言之,这里没有什么可以“修复”的

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