Java Sound Program( Capture And Playback) from developer.com
来源:互联网 发布:永恒的记忆js下载 编辑:程序博客网 时间:2024/05/01 14:53
let's it to backup!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
public class AudioCapture01 extends JFrame{
boolean stopCapture=false;
ByteArrayOutputStream byteArrayOutputStream;
AudioFormat audioFormat;
TargetDataLine targetDataLine;
AudioInputStream audioInputStream;
SourceDataLine sourceDataLine;
public static void main(String[] args){
new AudioCapture01();
}
public AudioCapture01(){
final JButton captureBtn=new JButton("Capture");
final JButton stopBtn=new JButton("Stop");
final JButton playBtn=new JButton("Playback");
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
playBtn.setEnabled(false);
captureBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(false);
stopBtn.setEnabled(true);
playBtn.setEnabled(false);
captureAudio();
}
}
);
getContentPane().add(captureBtn);
stopBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
playBtn.setEnabled(true);
stopCapture=true;
}
}
);
getContentPane().add(stopBtn);
playBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
playAudio();
}
}
);
getContentPane().add(playBtn);
getContentPane().setLayout(new FlowLayout());
setTitle("Capture/Playback Demo");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(250,70);
setVisible(true);
}
private void captureAudio(){
try{
audioFormat=getAudioFormat();
DataLine.Info dataLineInfo=new DataLine.Info(
TargetDataLine.class,audioFormat);
targetDataLine=(TargetDataLine)AudioSystem.getLine(dataLineInfo);
targetDataLine.open(audioFormat);
targetDataLine.start();
Thread captureThread=new Thread(new CaptureThread());
captureThread.start();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
private void playAudio(){
try{
byte audioData[]=byteArrayOutputStream.toByteArray();
InputStream byteArrayInputStream=new ByteArrayInputStream(audioData);
AudioFormat audioFormat=getAudioFormat();
audioInputStream=new AudioInputStream(
byteArrayInputStream,audioFormat,audioData.length/audioFormat.getFrameSize());
DataLine.Info dataLineInfo=new DataLine.Info(
SourceDataLine.class,audioFormat);
sourceDataLine=(SourceDataLine)AudioSystem.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();
Thread playThread=new Thread(new PlayThread());
playThread.start();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
private AudioFormat getAudioFormat(){
float sampleRate=8000.0F;
int sampleSizeInBits=16;
int channels=1;
boolean signed=true;
boolean bigEndian=false;
return new AudioFormat(
sampleRate,sampleSizeInBits,channels,signed,bigEndian);
}
class CaptureThread extends Thread{
byte tempBuffer[]=new byte[10000];
public void run(){
byteArrayOutputStream=new ByteArrayOutputStream();
stopCapture=false;
try{
while(!stopCapture){
int cnt=targetDataLine.read(tempBuffer, 0, tempBuffer.length);
if(cnt>0){
byteArrayOutputStream.write(tempBuffer,0,cnt);
}
}
byteArrayOutputStream.close();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
}
class PlayThread extends Thread{
byte tempBuffer[]=new byte[10000];
public void run(){
try{
int cnt;
while((cnt=audioInputStream.read(tempBuffer,0,tempBuffer.length))!=-1){
if(cnt>0){
sourceDataLine.write(tempBuffer, 0, cnt);
}
}
sourceDataLine.drain();
sourceDataLine.close();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
public class AudioCapture01 extends JFrame{
boolean stopCapture=false;
ByteArrayOutputStream byteArrayOutputStream;
AudioFormat audioFormat;
TargetDataLine targetDataLine;
AudioInputStream audioInputStream;
SourceDataLine sourceDataLine;
public static void main(String[] args){
new AudioCapture01();
}
public AudioCapture01(){
final JButton captureBtn=new JButton("Capture");
final JButton stopBtn=new JButton("Stop");
final JButton playBtn=new JButton("Playback");
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
playBtn.setEnabled(false);
captureBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(false);
stopBtn.setEnabled(true);
playBtn.setEnabled(false);
captureAudio();
}
}
);
getContentPane().add(captureBtn);
stopBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
captureBtn.setEnabled(true);
stopBtn.setEnabled(false);
playBtn.setEnabled(true);
stopCapture=true;
}
}
);
getContentPane().add(stopBtn);
playBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
playAudio();
}
}
);
getContentPane().add(playBtn);
getContentPane().setLayout(new FlowLayout());
setTitle("Capture/Playback Demo");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(250,70);
setVisible(true);
}
private void captureAudio(){
try{
audioFormat=getAudioFormat();
DataLine.Info dataLineInfo=new DataLine.Info(
TargetDataLine.class,audioFormat);
targetDataLine=(TargetDataLine)AudioSystem.getLine(dataLineInfo);
targetDataLine.open(audioFormat);
targetDataLine.start();
Thread captureThread=new Thread(new CaptureThread());
captureThread.start();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
private void playAudio(){
try{
byte audioData[]=byteArrayOutputStream.toByteArray();
InputStream byteArrayInputStream=new ByteArrayInputStream(audioData);
AudioFormat audioFormat=getAudioFormat();
audioInputStream=new AudioInputStream(
byteArrayInputStream,audioFormat,audioData.length/audioFormat.getFrameSize());
DataLine.Info dataLineInfo=new DataLine.Info(
SourceDataLine.class,audioFormat);
sourceDataLine=(SourceDataLine)AudioSystem.getLine(dataLineInfo);
sourceDataLine.open(audioFormat);
sourceDataLine.start();
Thread playThread=new Thread(new PlayThread());
playThread.start();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
private AudioFormat getAudioFormat(){
float sampleRate=8000.0F;
int sampleSizeInBits=16;
int channels=1;
boolean signed=true;
boolean bigEndian=false;
return new AudioFormat(
sampleRate,sampleSizeInBits,channels,signed,bigEndian);
}
class CaptureThread extends Thread{
byte tempBuffer[]=new byte[10000];
public void run(){
byteArrayOutputStream=new ByteArrayOutputStream();
stopCapture=false;
try{
while(!stopCapture){
int cnt=targetDataLine.read(tempBuffer, 0, tempBuffer.length);
if(cnt>0){
byteArrayOutputStream.write(tempBuffer,0,cnt);
}
}
byteArrayOutputStream.close();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
}
class PlayThread extends Thread{
byte tempBuffer[]=new byte[10000];
public void run(){
try{
int cnt;
while((cnt=audioInputStream.read(tempBuffer,0,tempBuffer.length))!=-1){
if(cnt>0){
sourceDataLine.write(tempBuffer, 0, cnt);
}
}
sourceDataLine.drain();
sourceDataLine.close();
}catch(Exception e){
System.out.println(e);
System.exit(0);
}
}
}
}
- Java Sound Program( Capture And Playback) from developer.com
- Java Sound Program(Capture And Playback) 2 from developer.com
- Java Sound Program(Capture And Playback) 3 from developer.com
- Java Sound Program( Capture And Stop) from developer.com
- Java event capture and playback
- Skype audio playback and capture problem on ubuntu 8.10
- Calling Java program from C#
- java console program demo quote from Stanford cs106a, "the art and science of java"
- Capture Image from Camera and Display in Activity
- java sound
- 25 Core Java Questions and Answers from Job Interviews Software developer
- Debugging PL-SQL calls from Java Session Using Eclipse and SQL Developer
- Linux sound and SCSI
- safe and sound
- capture from the camera
- iPhone Developer Program
- iOS Developer Program
- Multimedia and Camera - Media Playback
- P1072新年趣事之债务解题报告
- 让input表单不保存历史记录的方法
- 人民币大小写转换的问题
- 解释泛型的基本原理
- 什么是面向对象编程
- Java Sound Program( Capture And Playback) from developer.com
- 向网易负责互动的编辑致敬……
- 随意移动图片!
- 切勿做“心理奴”
- 你人脉网中应该有的10种人
- GOOGLE简直太有用啦! 太强了...利用google突破各种封锁来下载你要的东西...抄下来了
- DrectShow工作流程
- javascript学习笔记(七)--DOM基础
- PDA-GPS移动GIS系统