Tag: audio

切割波形文件

如何使用java剪切.wave文件? 我想要的是: 当用户按下标记为cut的按钮时,它应该将音频从前一个mark (以纳秒为单位)切割到当前位置(以纳秒为单位)。 (在声音被切断后,标记位于当前位置,以纳秒为单位)在我得到那段音频后,我想保存那段音频文件。 // obtain an audio stream long mark = 0; // initially set to zero //get the current position in nanoseconds // after that how to proceed ? // another method ? 我怎样才能做到这一点 ?

Java Sound API在您的计算机上找到哪些输出和记录端口?

我正在使用Java Sound API ,如果我想调整记录卷,我需要对操作系统公开给Java的硬件进行建模。 事实certificate,所呈现的内容有很多种。 因此,我谦虚地要求任何人能够帮助我在他们的计算机上运行以下内容并回发结果,以便我可以了解那里有什么。 提前感谢任何可以提供帮助的人:-) import javax.sound.sampled.*; public class SoundAudit { public static void main(String[] args) { try { System.out.println(“OS: “+System.getProperty(“os.name”)+” “+ System.getProperty(“os.version”)+”/”+ System.getProperty(“os.arch”)+”\nJava: “+ System.getProperty(“java.version”)+” (“+ System.getProperty(“java.vendor”)+”)\n”); for (Mixer.Info thisMixerInfo : AudioSystem.getMixerInfo()) { System.out.println(“Mixer: “+thisMixerInfo.getDescription()+ ” [“+thisMixerInfo.getName()+”]”); Mixer thisMixer = AudioSystem.getMixer(thisMixerInfo); for (Line.Info thisLineInfo:thisMixer.getSourceLineInfo()) { if (thisLineInfo.getLineClass().getName().equals( “javax.sound.sampled.Port”)) { Line thisLine = […]

在java中录制流媒体音频?

我正在尝试设置一个程序来记录互联网音频流的一部分,并将其保存到文件(最好是mp3或wav)。 我到处寻找,我找不到任何体面的方法来做到这一点。 我找到了两个看起来像他们工作的不同的库(NativeBass和Xuggle),但是它们都不支持我需要的64位窗口。 有谁知道使用java保存一部分互联网音频流的简单方法? (如果重要的话,那就是“audio / mpeg”流)。 编辑:好的,我找到了一种似乎有效的方法。 但我还有一个问题 import java.net.URLConnection; import java.net.URL; import java.io.InputStream; import java.io.OutputStream; import java.io.FileOutputStream; import java.io.File; public class Test{ public static void main (String[] args){ try{ URLConnection conn = new URL(“http://streamurl.com/example”).openConnection(); InputStream is = conn.getInputStream(); OutputStream outstream = new FileOutputStream(new File(“C:/Users/Me/Desktop/output.mp3”)); byte[] buffer = new byte[4096]; int len; long t […]

使用带有silencedetect的FFMPEG来消除音频静音

我试图使用以下命令与最新的ffmpeg构建来删除我的.mp3文件中的沉默: ffmpeg -i SILENCE.mp3 -af silencedetect=n=-50dB:d=1 -y -ab 192k SILENCE_OUT.mp3 但是,会生成以下输出: ffmpeg version N-66154-g1654ca7 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 5 2014 22:10:38 with gcc 4.8.3 (GCC) configuration: –enable-gpl –enable-version3 –disable-w32threads –enable-av isynth –enable-bzlib –enable-fontconfig –enable-frei0r –enable-gnutls –enab le-iconv –enable-libass –enable-libbluray –enable-libbs2b –enable-libcaca — enable-libfreetype –enable-libgme –enable-libgsm –enable-libilbc –enable-lib modplug –enable-libmp3lame –enable-libopencore-amrnb […]

AudioInputStream不起作用

我每次用户按下按钮时都会尝试播放.wav声音,但会抛出exception: 线程“Thread-0”中的exceptionjava.lang.IllegalArgumentException:格式无效 at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99) 在org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402) 在org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453) 在Uber.play(Uber.java:534) 在优步$ 5.run(Uber.java:340) 在java.lang.Thread.run(Thread.java:724) 这是代码: //Play Audio File public void play(String file) throws LineUnavailableException, UnsupportedAudioFileException, IOException { AudioInputStream inputStream = AudioSystem.getAudioInputStream(new File(file)); Clip clip = AudioSystem.getClip(); clip.open(inputStream); clip.start(); }

Java同时播放多个剪辑

因此,每次单击面板时,我的应用程序都应该播放WAV文件。 但现在的问题是,它在第​​二个播放之前等待第一个完成。 我希望能够让他们同时玩。 我把Thread.sleep(500)的原因是因为如果我没有,那么它根本不会播放声音:( import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.FloatControl; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; import javax.swing.JFrame; @SuppressWarnings(“serial”) public class SoundEffectPlayer extends JFrame { /* * Jframe stuff */ public SoundEffectPlayer() { this.setSize(400, 400); this.setTitle(“Mouse Clicker”); this.addMouseListener(new Clicker()); this.setVisible(true); } private class Clicker extends […]

在没有临时文件的情况下将音频流转换为Java中的WAV字节数组

给定一个调用的InputStream in其中包含压缩格式的音频数据(如MP3或OGG),我希望创建一个包含输入数据的WAV转换的byte数组。 不幸的是,如果您尝试这样做,JavaSound会向您发出以下错误: java.io.IOException: stream length not specified 我设法通过将wav写入临时文件然后将其读回来使其工作,如下所示: AudioInputStream source = AudioSystem.getAudioInputStream(new BufferedInputStream(in, 1024)); AudioInputStream pcm = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, source); AudioInputStream ulaw = AudioSystem.getAudioInputStream(AudioFormat.Encoding.ULAW, pcm); File tempFile = File.createTempFile(“wav”, “tmp”); AudioSystem.write(ulaw, AudioFileFormat.Type.WAVE, tempFile); // The fileToByteArray() method reads the file // into a byte array; omitted for brevity byte[] bytes = fileToByteArray(tempFile); tempFile.delete(); return bytes; […]

如何计算java中音频信号的电平/幅度/ db?

我想在java中为麦克风创建一个音频电平表,以检查输入的大小。 它应该看起来像操作系统之一。 我不是在询问gui。 它只是计算出来的字节流中的音频电平 n = targetDataLine.read( tempBuffer , 0 , tempBuffer.length ); 所以我已经有了一些正在运行的东西,但它甚至都没有接近我操作系统的水平仪(窗口)它卡在中间。 我有0到100之间的值是好的,但是在中间音量,无论输入多么大,它都会在60左右。 这是我现在计算它的方式: amplitude = 0; for (int j = 0; j tempBuffer[j+1]) amplitude = amplitude + tempBuffer[j] – tempBuffer[j+1]; else amplitude = amplitude + tempBuffer[j + 1] – tempBuffer[j]; } amplitude = amplitude / tempBuffer.length * 2; 是否有更好/更精确的方法来计算音频电平来监控它? 或者我可能犯了一个重大错误? 那是我的Audioformat: public […]

转换音频格式

我在转换WAV文件的音频格式时遇到了麻烦。 我正从麦克风录制声音,声音按以下格式录制:PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧 我想将上述格式转换为ULAW 8000.0 Hz,8位,单声道,1字节/帧 我使用以下代码, InputStream is = request.getInputStream(); AudioInputStream ais = AudioSystem.getAudioInputStream(is); AudioFormat oldFormat = ais.getFormat(); AudioFormat newFormat = new AudioFormat(AudioFormat.Encoding.ULAW, 8000, 8, 1, 1, 8000, false) ; AudioInputStream lowResAIS = AudioSystem.getAudioInputStream(newFormat, ais); //Getting the below Exception on this line 我收到以下错误, java.lang.IllegalArgumentException:不支持的转换:ULAW 8000.0 Hz,8位,单声道,1字节/帧,来自PCM_SIGNED 44100.0 Hz,16位,单声道,2字节/帧,little-endian 有人可以帮我解决这个问题! 万分感谢!!!

Java中的正弦波声音发生器

在Java中以任何频率生成正弦波声音的最简单方法是什么? 样本大小超过2个字节会有所帮助,但这并不重要。 谢谢