`
nakupanda
  • 浏览: 417066 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用JAVA录音

    博客分类:
  • java
阅读更多
略经改动,作者名字忘了不好意思。

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();
//	}

}


分享到:
评论

相关推荐

    Java录音小程序(3)个

    Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小程序(3)个Java录音小...

    java录音(java源码)

    java录音小程序,也是网载的,本人测试录音成功,分享给有需要的人。 提示:如果你使用无法录音,请试试在其它机器上如何,可能是你机器的问题,本人就吃过这样的亏。

    录音代码.java 录音代码.java

    录音代码.java 录音代码.java 录音代码.java

    基于Java的录音与音频播放设计源码

    项目包含39个文件,主要使用Java编程语言。文件类型包括10个XML配置文件、10个WEBP图片文件、9个Java源代码文件、3个Gradle文件、2个GIT忽略文件、2个Properties配置文件、1个PRO项目文件、1个Gradlew文件和1个BAT...

    java实现麦克风自动录音

    java实现麦克风自动录音 获取麦克风音频数据,在控制台输入字母end按回车,则结束录音;

    java 实现一个录音机

    总的来说,实现一个Java录音机需要对Java Sound API有深入的理解,包括音频格式、数据流的处理以及资源管理。通过上述步骤,你可以创建一个基本的录音程序,根据需求还可以扩展功能,如添加播放、剪辑、音效处理等。

    java 录音机

    一个用java写的简单的录音机,亲自测试没有问题,可以生成wav声音,格式可调

    Java+FlashWavRecorder实现网页录音并上传

    本篇文章将深入探讨如何使用Java与FlashWavRecorder技术实现网页录音并上传的功能。 首先,我们要明白Java和FlashWavRecorder在这一过程中的角色。Java是一种广泛使用的后端编程语言,它能够处理服务器端的逻辑,...

    java录音,并调用科大讯飞语音转写实现会议既要

    java调用科大讯飞语音转写接口,实现会议录音,并实现记录会议既要功能!

    java录音程序

    通过java实现的录音功能,可以修改录音存储的位置

    基于Java Sound的简单录音(音频采集)代码

    本篇将深入探讨如何利用Java Sound API实现简单的录音(音频采集)功能。 首先,我们关注的是"SimpleRecord.java"文件,这是实现录音功能的核心代码。在这个文件中,我们将看到如何创建一个AudioInputStream对象,...

    java 录音与播放材料

    在Java编程环境中,录音与播放功能是通过Java Sound API实现的。这个API提供了一系列的类和接口,使得开发者能够处理音频输入、输出以及处理。在这个"java 录音与播放材料"的压缩包中,可能包含了相关的代码示例、...

    录音机电量的使用情况java

    录音机的使用情况,一个简单的java程序。可以帮助人们了解和使用java然后学习java。里面运用了一些简单的类和方法,来显示录音机的点亮使用情况

    JAVA编写的录音机源代码

    根据提供的文件信息,我们可以分析出该Java程序是一个简单的录音机应用程序。下面将对该程序的关键知识点进行详细解析。 ### 关键知识点 #### 1. Java IO流处理 在本程序中,作者利用了Java中的IO流来进行数据的...

    java 录音程序

    Java录音程序是使用Java语言开发的一种能够从计算机的麦克风捕获音频流并将其保存为WAV格式文件的应用。在本文中,我们将深入探讨如何利用Java实现这一功能,以及涉及的相关技术点。 首先,Java提供了Java Sound ...

    JAVA语音转文字

    - **录音**:利用Java的`javax.sound.sampled`包来捕获和录制音频。 - **上传音频**:将录制的音频数据转换为API接受的格式,如PCM或WAV,然后上传到语音识别服务。 - **获取结果**:服务返回识别后的文本,你...

    java实现桌面录屏录音软件项目源码(录屏、录音、暂停、播放、mp4保存)

    - 要实现录音功能,可以使用Java的`javax.sound.sampled`包。它提供了对音频输入和输出的低级控制,包括麦克风的音频输入。 - 音频数据需要实时捕获并存储,与视频帧同步。 4. **暂停与恢复** - 录制过程中,...

    java版WAV录音器

    有需要的请留下您的评论,如果需要更加丰富的功能,大家讨论一起学习下,呵呵

    java实现屏幕录制和播放(包含录音)

    用java写了个录视频的小程序, 录制后文件默认保存在系统临时目录, 录制视频和麦克风声音, 播放时回车键进入全屏, esc退出全屏, 希望能对有兴趣的朋友提供参考 已重写新版原生java生成FLV格式视频文件 请看...

Global site tag (gtag.js) - Google Analytics