基本信息
源码名称:JAVA麦克风录音示例源码
源码大小:0.01M
文件格式:.zip
开发语言:Java
更新时间:2016-01-28
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 1 元×
微信扫码支付:1 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
利用JAVA实现麦克风录音功能,支持常见的音频格式.当用户点击捕捉按钮,输入 从麦克风捕获数据,并保存在 经指定的命名junk.xx音频文件文件格式。 (xx为文件扩展名 指定的文件格式。你可以很容易地改变 文件名的东西比其他的垃圾,如果你 选择这样做。)
数据采集站和输出文件被关闭 当用户单击Stop按钮。 它应当能够播放的音频文件 使用任何各种现成的 媒体播放器,如Windows媒体播放器。
不是所有的文件类型可以在所有系统上创建。 例如,类型AIFC和SND产生“型 不支持“错误在我的系统。
package fu20130318;
/*File AudioRecorder.java
Copyright 2003, Richard G. Baldwin
本程序演示的音频捕获
从麦克风的音频文件的数据。
一个图形用户界面出现在屏幕上的
下面的按钮:
Capture
Stop
此外,五个单选按钮出现在
屏幕允许用户选择的所述一个
以下五种音频输出文件格式:
AIFC
AIFF
AU
SND
WAVE
当用户点击捕捉按钮,输入
从麦克风捕获数据,并保存在
经指定的命名junk.xx音频文件
文件格式。 (xx为文件扩展名
指定的文件格式。你可以很容易地改变
文件名的东西比其他的垃圾,如果你
选择这样做。)
数据采集站和输出文件被关闭
当用户单击Stop按钮。
它应当能够播放的音频文件
使用任何各种现成的
媒体播放器,如Windows媒体播放器。
不是所有的文件类型可以在所有系统上创建。
例如,类型AIFC和SND产生“型
不支持“错误在我的系统。
请务必从媒体释放旧文件
玩家试图创建一个新的文件之前,
用相同的扩展名。
Tested using SDK 1.4.1 under Win2000
************************************************/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
public class AudioRecorder extends JFrame {
private static final long serialVersionUID = 1L;
AudioFormat audioFormat;
TargetDataLine targetDataLine;
final JButton captureBtn = new JButton("Capture");
final JButton stopBtn = new JButton("Stop");
final JPanel btnPanel = new JPanel();
final ButtonGroup btnGroup = new ButtonGroup();
final JRadioButton aifcBtn = new JRadioButton("AIFC");
final JRadioButton aiffBtn = new JRadioButton("AIFF");
final JRadioButton auBtn = // selected at startup
new JRadioButton("AU", true);
final JRadioButton sndBtn = new JRadioButton("SND");
final JRadioButton waveBtn = new JRadioButton("WAVE");
public static void main(String args[]) {
new AudioRecorder();
}// end main
public AudioRecorder() {// constructor
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
// 注册匿名的听众
captureBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
captureBtn.setEnabled(false);
stopBtn.setEnabled(true);
//从捕捉输入数据
//麦克风,直到停止按钮
//点击。
captureAudio();
}// end actionPerformed
}// end ActionListener
);// end addActionListener()
stopBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
//终止输入数据的捕获
//从麦克风。
targetDataLine.stop();
targetDataLine.close();
}// end actionPerformed
}// end ActionListener
);// end addActionListener()
// 把按钮放在JFrame中
getContentPane().add(captureBtn);
getContentPane().add(stopBtn);
// 包括在组中的单选按钮
btnGroup.add(aifcBtn);
btnGroup.add(aiffBtn);
btnGroup.add(auBtn);
btnGroup.add(sndBtn);
btnGroup.add(waveBtn);
// 添加单选按钮到JPanel中
btnPanel.add(aifcBtn);
btnPanel.add(aiffBtn);
btnPanel.add(auBtn);
btnPanel.add(sndBtn);
btnPanel.add(waveBtn);
// 把JPanel中在JFrame中
getContentPane().add(btnPanel);
//完成图形用户界面,使可见
getContentPane().setLayout(new FlowLayout());
setTitle("Copyright 2003, R.G.Baldwin");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(300, 120);
setVisible(true);
}// end constructor
//此方法捕获从一个音频输入
//麦克风,并将其保存在一个音频文件。
private void captureAudio() {
try {
//得到的东西设定为捕捉
audioFormat = getAudioFormat();
DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, audioFormat);
targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo);
//创建一个线程来捕捉麦克风
//数据转换为音频文件并启动
//线程运行。它会一直运行,直到
//停止按钮被点击。该方法
//将启动线程后返回。
new CaptureThread().start();
} catch (Exception e) {
e.printStackTrace();
System.exit(0);
}// end catch
}// end captureAudio method
//此方法创建并返回一个
//对于一组给定的格式AudioFormat对象
//参数。如果这些参数不工作
//很适合你,尝试一些其他的
//允许的参数值,这显示
//以下的声明的评论。
private AudioFormat getAudioFormat() {
float sampleRate = 8000.0F;
// 8000,11025,16000,22050,44100
int sampleSizeInBits = 16;
// 8,16
int channels = 1;
// 1,2
boolean signed = true;
// true,false
boolean bigEndian = false;
// true,false
return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed,
bigEndian);
}// end getAudioFormat
// =============================================//
//内部类从麦克风中捕获数据
//并将其写入到输出的音频文件。
class CaptureThread extends Thread {
public void run() {
AudioFileFormat.Type fileType = null;
File audioFile = null;
//设置文件类型和文件扩展名
//根据选择的单选按钮。
if (aifcBtn.isSelected()) {
fileType = AudioFileFormat.Type.AIFC;
audioFile = new File("junk.aifc");
} else if (aiffBtn.isSelected()) {
fileType = AudioFileFormat.Type.AIFF;
audioFile = new File("junk.aif");
} else if (auBtn.isSelected()) {
fileType = AudioFileFormat.Type.AU;
audioFile = new File("junk.au");
} else if (sndBtn.isSelected()) {
fileType = AudioFileFormat.Type.SND;
audioFile = new File("junk.snd");
} else if (waveBtn.isSelected()) {
fileType = AudioFileFormat.Type.WAVE;
audioFile = new File("junk.wav");
}// end if
try {
targetDataLine.open(audioFormat);
targetDataLine.start();
AudioSystem.write(new AudioInputStream(targetDataLine),fileType, audioFile);
} catch (Exception e) {
e.printStackTrace();
}// end catch
}// end run
}// end inner class CaptureThread
// =============================================//
}// end outer class AudioRecorder02.java