- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试从我的 PC 的线路输入中捕获音频,为此我正在使用 AudioSystem类(class)。静态 AudioSystem.write 方法有两种选择之一:写入文件或写入流。我可以让它很好地写入文件,但每当我尝试写入流时,我都会抛出 java.io.IOException(未指定流长度)。至于我的缓冲区,我使用的是 ByteArrayOutputStream。是否有另一种流我应该在其他地方使用或弄乱?
另外在相关主题中,可以通过调用 TargetDataLine 直接对 ( read ) 中的音频线进行采样.这是进行音频捕获还是使用 AudioSystem 的首选方式?
更新请求的源代码:
final private TargetDataLine line;
final private AudioFormat format;
final private AudioFileFormat.Type fileType;
final private AudioInputStream audioInputStream;
final private ByteArrayOutputStream bos;
// Constructor, etc.
public void run()
{
System.out.println("AudioWorker Started");
try
{
line.open(format);
line.start();
// This commented part is regarding the second part
// of my question
// byte[] buff = new byte[512];
// int bytes = line.read(buff, 0, buff.length);
AudioSystem.write(audioInputStream, fileType, bos);
}
catch ( Exception e )
{
e.printStackTrace();
}
System.out.println("AudioWorker Finished");
}
// Stack trace in console
AudioWorker Started
java.io.IOException: stream length not specified
at com.sun.media.sound.WaveFileWriter.write(Unknown Source)
at javax.sound.sampled.AudioSystem.write(Unknown Source)
at AudioWorker.run(AudioWorker.java:41)
AudioWorker Finished
最佳答案
来自 AudioSystem.write JavaDoc:
Writes a stream of bytes representing an audio file of the specified file type to the output stream provided. Some file types require that the length be written into the file header; such files cannot be written from start to finish unless the length is known in advance. An attempt to write a file of such a type will fail with an IOException if the length in the audio file type is AudioSystem.NOT_SPECIFIED.
关于Java AudioSystem 和 TargetDataLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/598344/
我有一个程序会询问用户他们想要从可用歌曲列表中播放哪些歌曲,并且在用户选择一首歌曲后,一旦歌曲完成,它就会询问用户他们想要再次播放哪首歌曲。我的问题是如何防止循环询问用户他们想要播放哪首歌曲,直到所选
我有许多从 Java 播放的 .wav 文件。在这个精简的示例中,“滴水”是可以听到的,但“嗖嗖”是听不到的,即使它们通过相同的代码运行。 “swish”似乎没有什么不寻常的地方:它在 Gnome 桌
public void run(){ AudioInputStream audioInputStream= new AudioInputStream(pis,audioForm
我在 Java 应用程序中集成了音频。问题是有时clip.open()会挂起一点,所以我读到我需要重新加载剪辑,然后只需clip.start()。 我为每个音频文件使用一个声音类,它会在播放完成后重新
我正在尝试从我的 PC 的线路输入中捕获音频,为此我正在使用 AudioSystem类(class)。静态 AudioSystem.write 方法有两种选择之一:写入文件或写入流。我可以让它很好地写
目标:借助Android上的Java中的AudioinputStream和AudioSystem播放wav声音 private final int BUFFER_SIZE = 128000; priv
我的应用程序涉及通过 Web UI 上传波形文件,将格式转换为 8k、8 位 mulaw 并将其存储在服务器上。我的代码在尝试执行以下操作时在服务器上失败: final AudioInputStrea
我正在尝试使用 Java Sound API 将包含 MP3 文件数据的 InputStream 转换为 AudioInputStream。 但是,当我尝试这样做时,我不断遇到异常。 以下是导致问题的
我想知道从 TargetDataLine.read() 返回的字节格式。我得到数字,但我不知道它们代表什么。任何想法?我在 Google 上尝试查找并阅读 API 文档,但无法解决... 最佳答案 这
AudioManager 有一个 setParameters以字符串表示形式接受键值对的方法 ("parameter_name=parameter_value")。 在内部,它调用原生 AudioSy
我正在 Eclipse 中开发游戏。我有一些播放 wav 文件的代码: public void play(String path) { try { Clip clip = Au
我从InputStream获取字节,但我需要修改它们并将它们保存到Wav文件。 这是我的代码: 套接字发送从麦克风获取的音频。 AudioFormat adfmt = new AudioFormat(
我正在尝试从线路输入制作一些简单的 audiorecorder-player 但我遇到了一个非常烦人的问题:当我尝试使用 AudioSystem.getMixerInfo() 并打印出可用混音器的列表
我创建了下面给出的类来在游戏中实现声音。 执行时出现以下错误。 请有人告诉我为什么会出现此错误以及如何解决它!! 这是我的声音类文件: package flappyLemon.model.game;
您可以通过 Java EE 应用程序使用 AudioSystem 类访问客户端音频输入和输出吗?如果没有,你会怎样做? 最佳答案 您应该使用新的 navigator.getUserMedia() 和
我想在机器人上开发语音识别程序。机器人安装了 gentoo chroot。当我调用 AudioSystem.getMixerInfo() 时,它什么都不返回。 JDK 版本为 jdk-6u35-lin
我的音频项目中的一个库连续输出PCM音频的byte []数组流(以及长度和偏移整数)。我正在学习使用Java Sound API的Tritonus实现来将此PCM流编码为mp3。 Java Sound
我需要制作一个音频播放器,只要该子例程运行,它就会播放一段声音片段。它还必须在播放新声音片段之前停止之前的声音片段。 我遇到的问题是剪辑从未注册为正在运行。检查它是否正在运行的两个 if 语句都没有被
尝试在 java 中播放和音频剪辑,但每次都会弹出此错误。我导入了我需要的所有东西,所以我不确定问题出在哪里。 AudioInputStream audioInputStream = AudioSys
我有一个 AudioInputStream 音频输入,对象本身的编码为 ULAW System.out.println( audioInput.getFormat().getEncoding() );
我是一名优秀的程序员,十分优秀!