【实例简介】

利用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

java 麦克风_JAVA麦克风录音示例源码相关推荐

  1. 潜艇大战java代码_java潜艇大战游戏源码项目

    代码如下 package com.util; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimensio ...

  2. 易宝java面试_java 易宝支付源码 (已测试成功,有测试步骤图片)

    [实例简介] 1.登陆页面填入信息 选择银行. 2.网上找的新的ID,和密码加入到配置文件中使用 3.点击提交后连接到易宝的支付页面. 4.通过建行支付的连接(显示建行已经扣了0.01元) http: ...

  3. html5+在线录音,html5在线录音示例源码(MediaStream Recording API)

    [实例简介]微信端 录音 可用 [实例截图] [核心代码] // fork getUserMedia for multiple browser versions, for the future // ...

  4. java 实现loading效果_RxJava示例源码(请求网络数据+loading效果)

    [实例简介] [实例截图] [核心代码] package laobi.com.rxjavademo.activity; import android.content.Intent; import an ...

  5. Java绘画板源码_Java 绘图板 示例源码下载(画板)

    Java 绘图板 示例源码下载(画板) java 2020-8-21 下载地址 https://www.codedown123.com/36795.html package minidrawpad; ...

  6. php 通联支付demo,通联支付接口示例源码(.net/php/java)

    通联支付接口示例源码(.net/php/java) c# 2020-12-25 下载地址 https://www.codedown123.com/57372.html 资源下载此资源下载价格为2D币, ...

  7. uniapp - 超详细录音上传功能,点击开始录音 / 最后保存文件上传到服务器功能(附带详细示例源码及整个过程的实现方法,注释详细小白轻松上手改造)全端兼容!

    效果图 网上的教程太乱用不了,无法改造成自己想要的效果. 在uniapp中开发中,实现点击录音功能,并支持保存录音文件.uniapp编译后全平台兼容通用, 你可以直接复制示例源码,跟着教程一步步配置, ...

  8. java音频源码,Android Java实时音频SDK示例源码下载 - 开发者中心 - ZEGO即构科技

    示例源码 本地下载 本地下载 GitHub下载 说明 示例代码运行指引 1 准备环境 在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求(以下说明皆以 macOS 开发电脑为 ...

  9. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart;import java.util.ArrayList; import java.util.List ...

最新文章

  1. 第十六届智能车竞赛室内视觉AI组别靶标使用说明
  2. linux route命令深入浅出与实战案例精讲
  3. arm ffmpeg报错:Invalid data found when processing input(没解决)(在ubuntu上能正常运行)(重新交叉编译后问题解决)
  4. mysql查询某属性下所有值的前N条记录
  5. 漫游Kafka设计篇之性能优化
  6. python之Map函数 reduce 函数
  7. 高中信息技术必修一第一章思维导图_高中生物必修+选修思维导图最全归纳,从此高中生物无忧!...
  8. OpenCV基本线条操作
  9. -bash: fork: Cannot allocate memory问题,进程数满了的解决办法
  10. [双十二优惠大放送] 我是小册姐,我因掘金小册而被创造,谢谢你们20天的陪伴...
  11. java参考文献大全
  12. java架构师成长之路学习心得
  13. thinkpad T480安装WIN7系统NVM固态硬盘+INTEL HD620显卡
  14. 可能是目前最全的《Android面试题及解析》(379页)
  15. ionic 构建 Cannot load gulp tasks: Error: Error in module: .\gulpfile.js:
  16. c++ 运行出现0x0000007 错误解决总结
  17. myeclipse17创建Web、Maven项目
  18. csirs参考信号_一种信道状态信息参考信号CSI-RS的发送方法、装置及基站_2015109520063_说明书_专利查询_专利网_钻瓜专利网...
  19. foxmail收件箱按照每个人进行划分
  20. 10个简单的hacker加速你在Python中的数据分析

热门文章

  1. CentOS8(8.2)安装mysql8
  2. 双闭环pid matlab仿真,SPWM波控制单相逆变器双闭环PID调节器的Simulink建模与仿真...
  3. Modifiers should be declared in the correct order 修饰符应按正确的顺序声明
  4. linux 图片编辑 java_ImageJ For Linux x64(免费开源图片编辑软件)V1.49v官方版下载 - 下载吧...
  5. 实现一下模式识别(三)FLD
  6. 如何成为一名正义黑客?你应该学习什么?
  7. Python全国就业分布
  8. js实现表单form提交前进行确认提示
  9. 微信小程序云开发定时推送订阅消息
  10. 人脸检测or五官检测