gpt4 book ai didi

java - DataLine 和 (Output|Input)Stream 的区别?

转载 作者:行者123 更新时间:2023-12-04 06:33:51 31 4
gpt4 key购买 nike

我现在正在使用 Java 进行声音处理。在我的项目中,我必须处理流。所以我有很多工作人员做DataLineOutputStreamInputStream .
但对我来说,它们太相似了:(

有没有人可以帮我解决这个问题?提前致谢!
以下是我使用的一些代码:

        TargetDataLine line;
ByteArrayOutputStream out = new ByteArrayOutputStream();
int frameSizeInBytes = format.getFrameSize();
int bufferLengthInFrames = line.getBufferSize() / 8;
int bufferLengthInBytes = bufferLengthInFrames * frameSizeInBytes;
byte[] data = new byte[bufferLengthInBytes];
int numBytesRead;
try {
line = (TargetDataLine) AudioSystem.getLine(info);
line.open(format, line.getBufferSize());
} catch (LineUnavailableException ex) {
shutDown("Unable to open the line: " + ex);
return;
} catch (SecurityException ex) {
shutDown(ex.toString());
return;
} catch (Exception ex) {
shutDown(ex.toString());
return;
}
line.start();
while (thread != null) {
if ((numBytesRead = line.read(data, 0, bufferLengthInBytes)) == -1) {
break;
}
out.write(data, 0, numBytesRead);
}

我已经阅读了 类的文档目标数据线 ,据说:“'read(byte[] b, int off, int len)'从数据线的输入缓冲区读取音频数据。”

但是我们在哪里定义它?

此外,TargetDataLine 类型的行没有附加到任何混频器,所以我们怎么知道它是用于哪个混频器的???

最佳答案

InputStream表示一个字节流,我们可以在其中读取字节一个(或以块为单位)直到它为空。安 OutputStream是另一个方向 - 我们将字节一个一个(或以块为单位)写入,直到我们没有更多要写入的内容为止。

流用于发送或接收非结构化字节数据。
DataLine处理音频数据,即具有特殊含义的字节。并且它提供了一些特殊的方法来控制线路(开始/停止),获取音频数据的实际格式和一些其他特性。

关于java - DataLine 和 (Output|Input)Stream 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5075811/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com