用Java录音 在application中,要如何实现Java的录音啊。程序运行在linux环境中。有做过类似的功能的兄弟,给个例子。谢过了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JMF 实现,音频传输都没问题,去SUN网站研究下吧 to homeness(胡同里的小猫) ( ) 基本都有现成的东西可以用的,我做的是一个视频的远程监视 import java.io.*;import javax.sound.sampled.*;import javax.sound.sampled.spi.*;//前置處理public class JDKAudioRecorder 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 boolean m_bRecording;//後面需用到布林函數 True,False public JDKAudioRecorder(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 = "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, 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; JDKAudioRecorder recorder = null; recorder = new JDKAudioRecorder(targetDataLine, targetType, outputFile); recorder.start(); } public void start() { m_targetdataline.start(); super.start(); } public static void stopRecording() { m_targetdataline.stop(); m_targetdataline.close(); m_bRecording = false; } public void run() { try { AudioSystem.write(m_audioInputStream, m_targetType, m_outputFile); System.out.println("after write()"); } catch (IOException e) { e.printStackTrace(); } }}//一切準備ok後,開始呼叫DataLine類別中的start()method即可//開始錄音,停止錄音則透過stopRecording()method// public void start()//{// m_targetdataline.start();//}// public static void stopRecording()//{// m_targetdataline.stop();//} 以前没做过这块,不知道怎么入手。先看看例子了http://java.sun.com/products/java-media/jmf/2.1.1/jmstudio/jmstudio.html#Running to lixiaoxue85(蛮野蛮) ( ) 能不能贴在简单的例子,让偶入门一下 多谢zhuokai()和lixiaoxue85(蛮野蛮) 通过sh脚本的执行结果判断下一步动作 java的String中offset问题 这样子写不合理? JAVA中堆栈的应用,唉,我真是不会了,救命啊,做不出今晚回不去家了 用java怎么做出类似Dreamweaver那种效果 怎么老读不到.xml的文件,奇怪??? java多线程的问题 面向对象概念问题 java的类真多,类用法的在线邦助哪里可下载到?我曾看到别人有。 用过JCREATER的帮忙! 小弟在做scjp习题时遇到的一个问题…… 有没有办法设置JtabbedPane的tab(选项卡)的高度和宽度?
基本都有现成的东西可以用的,我做的是一个视频的远程监视
import javax.sound.sampled.*;
import javax.sound.sampled.spi.*;//前置處理public class JDKAudioRecorder 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 boolean m_bRecording;//後面需用到布林函數 True,False public JDKAudioRecorder(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 = "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, 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;
JDKAudioRecorder recorder = null; recorder = new JDKAudioRecorder(targetDataLine, targetType, outputFile);
recorder.start();
} public void start()
{
m_targetdataline.start();
super.start();
} public static void stopRecording()
{
m_targetdataline.stop();
m_targetdataline.close();
m_bRecording = false;
} public void run()
{
try
{
AudioSystem.write(m_audioInputStream, m_targetType, m_outputFile);
System.out.println("after write()");
} catch (IOException e)
{
e.printStackTrace();
}
}}
//一切準備ok後,開始呼叫DataLine類別中的start()method即可
//開始錄音,停止錄音則透過stopRecording()method
// public void start()
//{
// m_targetdataline.start();
//}
// public static void stopRecording()
//{
// m_targetdataline.stop();
//}
先看看例子了
http://java.sun.com/products/java-media/jmf/2.1.1/jmstudio/jmstudio.html#Running
能不能贴在简单的例子,让偶入门一下