TargetDataLine是声音的输入(麦克风),而SourceDataLine是输出(音响,耳机).

整个过程,请参见下面的程序.(运行后,实时地从麦克风录音,实时输出).

import java.io.*;

import javax.sound.sampled.AudioSystem;

import javax.sound.sampled.AudioInputStream;

import javax.sound.sampled.AudioFormat;

import javax.sound.sampled.SourceDataLine;

import javax.sound.sampled.DataLine;

import javax.sound.sampled.FloatControl;

import javax.sound.sampled.TargetDataLine;

public class RecordAndPlay {

static volatile boolean stop=false;

public static void main(String[] args) {

Play();

}

//播放音频文件

public static void Play() {

try {

AudioFormat audioFormat =

// new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100F,

// 8, 1, 1, 44100F, false);

new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100F, 16, 2, 4,

44100F, true);

DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat); TargetDataLine targetDataLine = (TargetDataLine) AudioSystem.getLine(info);

targetDataLine.open(audioFormat);

final SourceDataLine sourceDataLine;

info = new DataLine.Info(SourceDataLine.class, audioFormat);

sourceDataLine = (SourceDataLine) AudioSystem.getLine(info);

sourceDataLine.open(audioFormat);

targetDataLine.start();

sourceDataLine.start();

FloatControl fc=(FloatControl)sourceDataLine.getControl(FloatControl.Type.MASTER_GAIN);

double value=2;

float dB = (float)

(Math.log(value==0.0?0.0001:value)/Math.log(10.0)*20.0);

fc.setValue(dB);

int nByte = 0;

final int bufSize=4*100;

byte[] buffer = new byte[bufSize];

while (nByte != -1) {

//System.in.read();

nByte = targetDataLine.read(buffer, 0, bufSize);

sourceDataLine.write(buffer, 0, nByte);

}

sourceDataLine.stop();

} catch (Exception e) {

e.printStackTrace();

}

}

}

java动态录音_java实现动态录音,声卡有声音进来就自动录音相关推荐

  1. java如何实现动态时钟_Java实现动态数字时钟

    本文实例为大家分享了Java实现动态数字时钟的具体代码,供大家参考,具体内容如下 构建: Clock继承 JFrame 为运行页面 ClockText 测试类 创建 Clock 对象 运行效果: 具体 ...

  2. java数字时钟_Java实现动态数字时钟

    本文实例为大家分享了Java实现动态数字时钟的具体代码,供大家参考,具体内容如下 构建: Clock继承 JFrame 为运行页面 ClockText 测试类 创建 Clock 对象 运行效果: 具体 ...

  3. java动态打包_java 调用动态库打包sdk

    java连接c++动态库并生成jar包提供给别人调用 1.需要将java通过jni生成头文件,并导入到c++项目并对c++进行jni方法继承 在项目的src目录执行,否则会提示 错误:找不到符号 ja ...

  4. java常量配置_java项目动态配置常量和peiconfig.properties配置使用详解

    java项目动态配置常量和peiconfig.properties配置使用详解 点击:2 Java工程中配置信息一般都写在 properties文件中,下面这篇文章是对java基础配置的一点学习心得整 ...

  5. springboot 注解动态赋值_java springboot动态给注解属性参数赋值

    场景: 最近做了一个系统,使用Elasticsearch做了全文搜索,系统分为开发环境和正式环境,正式环境供公司内部使用,因为服务器资源不太充裕,决定开发环境和正式环境共用一个Elasticsearc ...

  6. java动物代码_Java基于接口实现模拟动物声音代码实例

    (1)编写接口Animal (Animal.java) public interface Animal{ public abstract void cry(); public abstract Str ...

  7. java jxl 筛选_JAVA 用 JXL导出excel怎么给标题设置自动筛选功能,求代码。

    展开全部 一.创建文件 拟生成e5a48de588b63231313335323631343130323136353331333363363435一个名为"test.xls"的Ex ...

  8. 苹果手机的siri在哪里_苹果手机轻敲背面3次自动录音,这个黑科技功能,我真是爱了|苹果手机|手机|siri...

    那么今天我再给大家分享一个,苹果手机轻敲背面3次,能自动录音的方法. 这个黑科技功能,我真是爱了!下面就一起来看看,是如何开启和使用的吧. 一.如何快速录音 1.首先打开桌面上的快捷指令工具,如果你没 ...

  9. java动态代理_Java代理模式及动态代理详解

    Java的动态代理在实践中有着广泛的使用场景,比如最场景的Spring AOP.Java注解的获取.日志.用户鉴权等.本篇文章带大家了解一下代理模式.静态代理以及基于JDK原生动态代理. 代理模式 无 ...

最新文章

  1. 类中成员函数声明后面的const的含义
  2. python 调用 so 库 需要注意的地方
  3. 在Silverlight中读取指定URL图片包数据
  4. 数学建模清风第一次直播:传染病模型和微分方程拟合
  5. win10切换输入法快捷键_输入法失灵怎么办?该怎么恢复?
  6. 哪有那么多「能力问题」,在你牛到一定程度前,全是「态度问题」
  7. jquery 高亮插件 highlight
  8. WindowsXP操作系统进程详细介绍
  9. 爬虫404如何跳过_金秀贤、全智贤主演的韩剧来自星星的你你如何评价?
  10. 如何基于AngularJS部分视图动态更改标头?
  11. 【声明】前方不设坑位,不收费!~ 我为NET狂官方学习计划
  12. 正定二次函数的共轭梯度法matlab实现
  13. 2022年Java秋招面试必看的 | 微服务面试题
  14. 【老生谈算法】基于主成分分析PCA的matlab人脸识别系统设计与算法原理(论文+程序源码)——人脸识别算法
  15. 本特利传感器330103-00-05-10-02-00
  16. Jmeter 压测工具使用手册(完整版)
  17. Android开发之本地音乐播放器(简单粗暴版)
  18. Sql Server Update 更新数据
  19. java的类型_java数据类型
  20. 【Java】抽象类和接口的区别

热门文章

  1. 基于MINA构建简单高性能的NIO应用-优化指南
  2. LoadRunner动态连接库函数的调用
  3. 树莓派 pip 手动安装 和使用阿里云源
  4. Centos6.8操作防火墙
  5. element 时间选择器——年
  6. NOI 08 石头剪刀布
  7. mengento 数据库模型
  8. 2014年百度之星程序设计大赛 - 初赛(第二轮)JZP Set
  9. SOA的十大技术理论体系
  10. 使用阿里云Mysql集群做读写分离_以及使用阿里云服务器自己搭建MyCat集群_费用核算---Linux工作笔记046