SoundServer 音频录制类:

public class SoundServer {

AudioRecord record;

public void startRecordSound() {

try {

record = new AudioRecord();

record.start();

} catch (Exception e) {

LogUtil.error(e);

}

}

public byte[] stopRecordSound() {

if (record != null) {

record.endRecord();

return record.getBuf();

}

return null;

}

}

class AudioRecord extends Thread {

AudioInputStream audioInputStream;

TargetDataLine line;

AudioFileFormat.Type targetType;

ByteArrayOutputStream bos = new ByteArrayOutputStream();

byte[] buf;

AudioRecord() throws Exception {

AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 16000, 8, 1, 1, 16000, false);

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

line = (TargetDataLine) AudioSystem.getLine(info);

line.open(audioFormat);

audioInputStream = new AudioInputStream(line);

targetType = AudioFileFormat.Type.AU;

}

@Override

public void start() {

line.start();

super.start();

}

public void endRecord() {

line.stop();

line.close();

buf = bos.toByteArray();

}

public byte[] getBuf() {

return buf;

}

@Override

public void run() {

try {

AudioSystem.write(audioInputStream, targetType, bos);

} catch (IOException e) {

LogUtil.error(e);

}

}

}

Launcher  测试主类:

public class Launcher {

public static void main(String[] args) throws Exception {

SoundServer ss = new SoundServer();

Scanner sc = new Scanner(System.in);

System.out.println("请输入Start开始:");

String input = sc.nextLine();

if ("start".equalsIgnoreCase(input)) {

ss.startRecordSound();

}

System.out.println("请输入End结束:");

input = sc.nextLine();

if ("end".equalsIgnoreCase(input)) {

byte[] voice = ss.stopRecordSound();

LogUtil.info(voice);

}

}

}

Java录制网页_Java 录制语音的实现代码相关推荐

  1. java 手机网页_Java爬虫: 爬取京东上的手机搜索页面 HttpClient+Jsoup

    1.需求及配置 需求:爬取京东手机搜索页面的信息,记录各手机的名称,价格,评论数等,形成一个可用于实际分析的数据表格. 使用Maven项目,log4j记录日志,日志仅导出到控制台. Maven依赖如下 ...

  2. java 简单万年历_JAVA实现的简单万年历代码

    本文实例讲述了JAVA实现的简单万年历.分享给大家供大家参考,具体如下: import java.util.Scanner; public class PrintCalendar { public s ...

  3. java实现微博_java实现的新浪微博分享代码实例

    weibo.java @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstan ...

  4. java treemap用法_Java TreeMap put()用法及代码示例

    TreeMap的java.util.TreeMap.put()方法用于将映射插入Map.这意味着我们可以将特定的键及其映射到的值插入到特定的映射中.如果传递了现有键,则以前的值将被新值替换.如果传递了 ...

  5. java range对象_Java LocalTime range()用法及代码示例

    LocalTime类的range()方法用于获取最小值和最大值形式的字段范围,并将该字段作为参数传递给此方法.此方法的返回值是该字段的ValueRange对象,并且该方法仅对LocalTime对象支持 ...

  6. java short字段_Java Field setShort()用法及代码示例

    java.lang.reflect.Field的setShort()方法用于将字段的值设置为指定对象的缩写.当您需要将对象的字段值设置为短时,可以使用此方法在对象上设置值. 用法: public vo ...

  7. java字符生成器_Java实现简单字符生成器代码例子

    创建成功的字符串对象,其长度是固定的,内容是不能被修改和编辑.虽然使用"+"可以达到增加新字符或字符串的目的,但"+"会产生一个新的String实例,会在内存中 ...

  8. java range(10)_Java Year range()用法及代码示例

    Year类的range()方法用于获取最大值和最小值的字段范围,并将该字段作为参数传递给此方法.此方法的返回值是该字段的ValueRange对象,并且该方法仅对Year对象支持的那些字段返回Value ...

  9. java dictionary 实例化_Java Dictionary put()用法及代码示例

    字典的put()方法用于在字典中插入映射.这意味着可以将特定键及其值映射到特定字典中. 用法: DICTIONARY.put(key, value) 参数:该方法有两个参数,都属于Dictionary ...

最新文章

  1. C++来了,详细知识点思维导图!
  2. python数据分析知识整理_Python基础知识点总结:数据分析从0到大师必Mark的一篇!(上)...
  3. Chapter2 MSP430硬件结构
  4. 爬虫3 requests基础之 乱码编码问题
  5. 纸片人活了!海报上的梅西、漫画里的悟空,都被AI唤醒
  6. IBM交付第25000个高端磁盘存储方案
  7. WM_CREATE消息响应函数和WM_INITDIALOG消息响应函数之区别
  8. 克服密集恐惧症,目标检测代你实现钢筋精准计数
  9. 一种基于频域滤波法消除干扰项与角谱法重构技术的数字全息显微台阶形貌测量实例分析
  10. prosody IM cert证书安装
  11. C++内存特征码定位(内核函数+sunday算法)
  12. 阴暗的底层阶级版罗密欧与朱丽叶——甲贺忍法帖
  13. C# 通过RS-232 读取 34401A万用表电压
  14. linux下用命令修改图片像素
  15. 纯前端实现登记照压缩宽高体积大小和换装功能
  16. C语言中0UL 1UL什么意思
  17. dd_engi 的背包九讲
  18. Jetpack - Paging
  19. python界面交互PyQt5–消息框(QMessageBox)
  20. 一篇文章读懂JSON

热门文章

  1. 超爆笑段子大集锦 你要不笑我自宫
  2. 爬取斗鱼房间号信息-计算在线观看总人数
  3. canvas手写签名
  4. html打飞机游戏代码,利用HTML5 Canvas实现打飞机游戏
  5. 海尔智家、海尔电器合体战美的、格力
  6. 输入两个正整数num1、num2,计算并输出它们的和、差、积、整数商和余数
  7. 工业互联网时代下橙色云CDS的商机直通车服务
  8. Python3 计算空气质量指数AQI
  9. 店铺微信公众号怎么创建?
  10. AcWing《蓝桥杯集训·每日一题》—— 3777 砖块