小编Wil*_*rne的帖子

Java Sound API 是否可以访问其他(非 Java)应用程序正在播放的声音?

过去几周我一直在阅读 Java Sound API,但我仍然不知道这是否可行。我之所以这么问是因为我想编写一个程序,该程序将通过系统的声音数据传送到输出线路,例如计算机的扬声器或耳机插孔,并将该数据写入音频文件。

从我读迄今约javax.sound.sampled,好像我可以从数据只读Mixer通过TargetDataLine; 然而,在编写了一个测试程序(下面提供)来查询我的系统以获取可用的混合器,然后查询这些混合器以获取可用的目标和源数据线;我意识到我所有的输出混音器除了我的默认混音器只支持SourceDataLines。此外,我无法判断TargetDataLine计算机的默认混音器(我有一台 Macbook pro)是否可以读取从其他应用程序发送到混音器的音频数据。所以在我深入研究这个项目之前,我想弄清楚是否有可能访问其他应用程序通过混音器发送的声音。

测试程序

import javax.sound.sampled.*;
import java.util.Scanner;

public class Capture {
    public static final String ANSI_RED = "\u001B[31m";
    public static final String ANSI_GREEN = "\u001B[32m";
    public static final String ANSI_RESET = "\u001B[m";

    private Mixer mixer;

    public Capture() {
        Mixer.Info[] installedMixers = AudioSystem.getMixerInfo();
        for(int n = 0; n < installedMixers.length; n++) {
            System.out.println(ANSI_GREEN + "[" + n + "] " + ANSI_RESET + …
Run Code Online (Sandbox Code Playgroud)

java audio javasound audio-recording

5
推荐指数
0
解决办法
983
查看次数

标签 统计

audio ×1

audio-recording ×1

java ×1

javasound ×1