如何解决音频流-捕获和读取麦克风数据
我正在尝试从默认麦克风获取麦克风数据,并将其发送到计算机上的另一个程序。发送正常,但是我没有从麦克风读取任何数据,这是输出。无论我是否读取数据,输出都是相同的。
Output:
This program: [B@ec7777
Reciever program: b'\x00\x00\x00\x00\x00\x00\.....
import java.lang.*;
import java.util.*;
import java.net.socketException;
import java.io.IOException;
import java.net.UnkNownHostException;
import java.util.zip.DataFormatException;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.DatagramPacket;
import javax.sound.sampled.*;
import javax.sound.sampled.TargetDataLine;
import javax.sound.sampled.AudioSystem.*;
import java.io.ByteArrayOutputStream;
class mainclass {
public static int buffer = 1472;
public static byte[] data = new byte[buffer];
private static AudioFormat format = new AudioFormat(10100.0f,16,1,true,true);
public static void main(String[] args) throws SocketException,UnkNownHostException,IOException,DataFormatException,InterruptedException,LineUnavailableException {
DatagramSocket socket = new DatagramSocket();
InetAddress address = InetAddress.getByName("my.ipa.ddr.ess");
TargetDataLine microphone = AudioSystem.getTargetDataLine(format);
int numBytesRead;
DatagramPacket packet;
microphone.start();
ByteArrayOutputStream out = new ByteArrayOutputStream();
for(int i=0;i<10;i++){
numBytesRead = microphone.read(data,data.length);
out.write(data,numBytesRead);
System.out.println(data);
packet = new DatagramPacket(data,data.length,address,myport);
socket.send(packet);
}
microphone.stop();
microphone.close();
}
}
如果我不抛出它,则会得到LineUnavailableException。
aud2.java:115: error: unreported exception LineUnavailableException; must be caught or declared to be thrown
TargetDataLine microphone = AudioSystem.getTargetDataLine(format);
// ^ pointing at (
解决方法
您列出的AudioFormat
似乎不太可能有效。
44100是更为常见的采样率。另外,如果您使用16位编码并正在录制单声道,则每帧将有2个字节,而不是指定的1个字节。
我的猜测是,这与获得“线路不可用”异常一致。可能还有其他问题。但是拥有Java支持的AudioFormat
仍然是必要的第一步。
如果您需要使用较低的采样率,可以在附近使用11025,并且系统可能会支持。另外,也许是8000。也许是16,000。但是我还没有深入研究替代采样率。
教程Using Files and Format Converters
中提供了有关测试是否支持音频格式的信息。对于笔记本电脑的麦克风(在使用此笔记本电脑的默认设置时),我使用非常普通的香草设置,有时也称为“ CD质量”。规格如下:
- 编码:AudioFormat.Encoding.PCM_SIGNED
- 采样率:44100
- 样本大小(以位为单位):16
- 渠道:2
- 框架大小:4
- 大端:错误
如果确定您拥有单声道,则通道为1,帧大小为2。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。