package cn.net.badboy;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.TargetDataLine;
public class CopyOfJDKAudioRecorder extends Thread {
//產生TargetDataLine類別的變數m_targetdataline
static TargetDataLine m_targetdataline;
//透過TargetDataLine介面(繼承自DataLine)與音效卡溝通 target目標
//產生AudioFileFormat.Type類別的變數m_targetType Format格式
static AudioFileFormat.Type m_targetType;
//產生AudioInputStream類別的變數m_audioInputStream stream流
static AudioInputStream m_audioInputStream;
static File m_outputFile;//產生File類別的變數 m_outputFile
static ByteArrayOutputStream bos = new ByteArrayOutputStream();
static byte[] buf;
static boolean m_bRecording;//後面需用到布林函數 True,False
public CopyOfJDKAudioRecorder(TargetDataLine line,
AudioFileFormat.Type targetType, File file) {
m_targetdataline = line;
m_audioInputStream = new AudioInputStream(line);
m_targetType = targetType;
m_outputFile = file;
}
public static void AudioRecorder() {
String Filename = "d:/JDKAudioRecord.wav ";
File outputFile = new File(Filename);
//我們一開始先在主程式裡指定聲音檔的檔名為
//JDKAudioRecorder.wav
// String Filename = "JDKAudioRecord.wav ";
//接著指定存檔的資料夾,預設存在相同的資料夾
// File outputFile = new File(Filename);
AudioFormat audioFormat = null;
//audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100.0F, 16, 2, 4, 44100.0F, false);
audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,44100F, 8, 1, 1, 44100F, false);
//再來設定和取得音效檔的屬性
// audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, 44100.0F, 16, 2, 4, 44100.0F, false);
DataLine.Info info = new DataLine.Info(TargetDataLine.class,
audioFormat);
TargetDataLine targetDataLine = null;
//然後透過TargetDataLine介面(繼承自DataLine)與音效卡溝通
// DataLine.Info info = new DataLine.Info(TargetDataLine.class, audioFormat);
// 接著做例外處理,當聲音裝置出錯或其他因素導致錄音功能無法被執行時,程式將被終止
try {
targetDataLine = (TargetDataLine) AudioSystem.getLine(info);
targetDataLine.open(audioFormat);// try{ }可能發生例外的敘述
} catch (LineUnavailableException e)//catch{ }處理方法
{
System.out.println("無法錄音,錄音失敗 ");
e.printStackTrace();
System.exit(-1);
}
AudioFileFormat.Type targetType = AudioFileFormat.Type.AU;
CopyOfJDKAudioRecorder recorder = null;
recorder = new CopyOfJDKAudioRecorder(targetDataLine, targetType, outputFile);
recorder.start();
}
public void start() {
m_targetdataline.start();
super.start();
System.out.println("recording...");
}
public static void stopRecording() {
m_targetdataline.stop();
m_targetdataline.close();
m_bRecording = false;
buf = bos.toByteArray();
System.out.println("stopped.");
}
public void run() {
try {
//AudioSystem.write(m_audioInputStream, m_targetType, m_outputFile);
AudioSystem.write(m_audioInputStream, m_targetType, bos);
System.out.println("after write() ");
} catch (IOException e) {
e.printStackTrace();
}
}
// public static void main(String args[])
// {
// CopyOfJDKAudioRecorder.AudioRecorder();
// }
}
相关推荐
基于STM32设计的智能厨房环境监测报警系统_426
随着天然气、液化石油气等可燃性气体在家庭中的广泛应用,燃气泄漏所引发的安全问题日益突出。针对传统家用可燃气体报警器功能单一、信息获取受限以及缺乏远程监测能力等不足,设计了一种基于STM32单片机的家用可燃气体报警器系统。
TargetDataLine、SourceDataLine
2019独角兽企业重金招聘Python工程师标准>>> ...
java 实现一个录音机
java 实现一个录音机 java 实现一个录音机 java 实现一个录音机
java获取麦实现语音聊天
java中TargetDataLine 接口提供从目标数据行的缓冲区读取所捕获数据的方法, SourceDataLine 接口提供将音频数据写入数据行的缓冲区中的方法。 如从音频捕获设备获取其数据的数据行。 调用start方法开始执行操作。 调用stop方法停止。 package chat; import javax.swing.JTextArea; /** * @a...
用Java实现网络语音信号传送
下面就针对前面提出的问题讨论一下解决的办法。 1 双方之间的网络连接 Java在这方面有其独特的优势,Java提供了丰富的网络类库的支持,可以轻松编写多种类型的网络通信程序。在我下面的例子中我就使用了TCP/IP协议,通过Java的Socket类进行编程。 2 音频信号的采集和回放以及音频数字信号的编码与解码 在解决这两个问题的时候,在网上很幸运地通过一些文章的介绍,找到了Answer M
1.Java实现音频录制和音频播放
java实现音频录制和播放
java实现录音功能
前几次博客中也是用java实现录音机的各种功能,这次是比先前有了一点优化,将录音的功能单独提取出来,这个程序的实现用到了编码器LAME.exe这个的作用是将录音得到的wav文件编码成MP3文件,这样的结果是容量大大减少,因为LAME编码器经测试在编码过程中路径中带有空格问题未能解决,所以只能找了一个笨的方法,为了将其放到指定的文件夹下(这个文件夹路径是带有空格的),所以只能先存放到D盘,然后利用文
java动态录音_java实现动态录音,声卡有声音进来就自动录音
TargetDataLine是声音的输入(麦克风),而SourceDataLine是输出(音响,耳机).整个过程,请参见下面的程序.(运行后,实时地从麦克风录音,实时输出).import java.io.*;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.AudioInputStream;import javax....
java添加录音,java录音程序
本人网上收集的两个java录音程序,文章出处不记得了.程序1:import javax.sound.sampled.*;import javax.swing.JFrame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.Toolkit;import javax.swing.J...
java录音程序
本人网上收集的两个java录音程序,文章出处不记得了.程序1: import javax.sound.sampled.*; import javax.swing.JFrame; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.Toolkit; imp...
用Java录音并播放
介绍 用Java该怎么实现录音以及播放声音的效果呢? 录音 [codesyntax lang="java"] /** * Copyright By suren. * You can get more information from my website: * http://surenpi.com */ package org.suren.talk.util; im
java录音库
Java录音库 在Java开发中,有时候我们需要录制音频,比如制作语音识别应用、音频编辑软件等。为了实现音频录制功能,我们可以使用Java录音库来帮助我们实现这一功能。Java录音库提供了一些API,可以方便地对音频进行录制、播放、编辑等操作。 Java录音库的作用 Java录音库主要用于处理音频相关的操作,包括录音、播放...
java分多次录音,Java awt 录音 长时间 录音 (3)
import javax.sound.sampled.*;import javax.swing.JFrame;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.Toolkit;import javax.swing.JPanel;import java.awt.event.Act...
java 录音_java awt 实现 录音(1)
package com.company.test3;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.InputStream;import java.awt.Button;import java.awt.Frame;import ja...
java 网页 录音_基于Java的录音机(浏览器访问,方便远程控制)
packageme.muphy.servicce;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Service;import javax.sound.sampled.*;import java.io.*;importjava.text.SimpleDateF...
java 网页 录音_Java+FlashWavRecorder实现网页录音并上传
【注意】【前言】肯定有需求要网页录音,并且要上传。这奇葩需求。然后找到了FlashWavRecorder,【原始版本号】1.下载在上面的地址下载zip解压之后,目录里面有个index.html。打开之后这效果:2.录音权限必须保证你的电脑有麦克风,也就是说台式机你得有耳麦。笔记本保证麦克风没有坏掉。有麦克风的情况下,点击上面的红框内的button。然后选择同意。例如以下:可能有的人会说我点了没反应...
简单实现音频录制
简单采用JFrame 展示音频录取功能实现 public class MyRecorder extends JFrame implements ActionListener { /** * */ private static final long serialVersionUID = 1L; // 定义录音格式 AudioFormat af = null; // 定义目标
java 录音_java实现录音功能,并以WAV格式保存
private static TargetDataLinetargetDataLine ;private static AudioFormat audioFormat;public void captureAudio(){try {// 构造具有线性 PCM 编码和给定参数的 AudioFormat。audioFormat = getAudioFormat();// 根据指定信息构造数据行的信息...
java实现一个录音播放的功能
需求: 1.实现可以从麦克风进行录音 2.可以停止录音 3.实现播放录音内容 4.并将所录的mp3文件全部存到F:/语音文件夹,语音的文件名以当前时间命名(java中是换算成秒),其中文件夹程序自己创建,不用担心出错 程序如下: import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.
java实现动态录音,声卡有声音进来就自动录音
TargetDataLine是声音的输入(麦克风),而SourceDataLine是输出(音响,耳机). 整个过程,请参见下面的程序.(运行后,实时地从麦克风录音,实时输出). import java.io.*; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioInputStream; imp
摩托罗拉Mag One A8i对讲机写频软件(Mag One A8i对讲机写频工具)V1.0 正式版.rar
摩托罗拉数模两用对讲机 A8i 写频软件,亲测能用!
725




被折叠的 条评论
为什么被折叠?



