我想弄清楚如何使用我的 MacBookPro 从麦克风录制声音。我不确定这是代码问题还是 MacOS 中的隐藏权限问题。
我已经完成了大部分教程并尝试了各种不同的解决方案,以至于我创建了下面的测试用例。
public class AudioLinesTester {
private static final Logger LOGGER = LoggerFactory.getLogger(AudioLinesTester.class);
public static void main(String[] args) {
LOGGER.debug("Starting Line tester");
AudioFormat format = new AudioFormat(8000.0f, 8, 1, true, true);
Mixer.Info[] infos = AudioSystem.getMixerInfo();
Map<Line.Info, byte[]> sounds = new HashMap<Line.Info, byte[]>();
Stream.of(infos).forEach(mixerInfo -> {
Mixer mixer = AudioSystem.getMixer(mixerInfo);
Line.Info[] lineInfos = mixer.getTargetLineInfo();
if (lineInfos.length > 0 && lineInfos[0].getLineClass().equals(TargetDataLine.class)) {
// The name of the AudioDevice
LOGGER.debug("Line Name: {}", mixerInfo.getName());
// The type of audio device
LOGGER.debug("Line Description: {}", mixerInfo.getDescription());
for (Line.Info lineInfo : lineInfos) {
LOGGER.debug("\t---{}", lineInfo);
Line line;
try {
line = mixer.getLine(lineInfo);
TargetDataLine microphone = AudioSystem.getTargetDataLine(format, mixerInfo);
microphone.open(format, 100352);
LOGGER.debug("Listening on {}", microphone);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int numBytesRead;
int CHUNK_SIZE = 1024;
byte[] data = new byte[microphone.getBufferSize() / 5];
microphone.start();
int bytesRead = 0;
我希望从某些东西中得到一些输出,但我只是得到填充有 0 的字节数组。
有人能帮忙吗?
千巷猫影
相关分类