真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java錄音代碼 html錄音代碼

java可以做語(yǔ)音錄音嗎

可以。

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、貴定網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為貴定等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

需求:

1.實(shí)現(xiàn)可以從麥克風(fēng)進(jìn)行錄音

2.可以停止錄音

3.實(shí)現(xiàn)播放錄音內(nèi)容

4.并將所錄的mp3文件全部存到F:/語(yǔ)音文件夾,語(yǔ)音的文件名以當(dāng)前時(shí)間命名(java中是換算成秒),其中文件夾程序自己創(chuàng)建,不用擔(dān)心出錯(cuò)

程序如下:

span style="font-size:18px;"import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import javax.sound.sampled.*;

public class MyRecord extends JFrame implements ActionListener{

//定義錄音格式

AudioFormat af = null;

//定義目標(biāo)數(shù)據(jù)行,可以從中讀取音頻數(shù)據(jù),該 TargetDataLine 接口提供從目標(biāo)數(shù)據(jù)行的緩沖區(qū)讀取所捕獲數(shù)據(jù)的方法。

TargetDataLine td = null;

//定義源數(shù)據(jù)行,源數(shù)據(jù)行是可以寫(xiě)入數(shù)據(jù)的數(shù)據(jù)行。它充當(dāng)其混頻器的源。應(yīng)用程序?qū)⒁纛l字節(jié)寫(xiě)入源數(shù)據(jù)行,這樣可處理字節(jié)緩沖并將它們傳遞給混頻器。

SourceDataLine sd = null;

//定義字節(jié)數(shù)組輸入輸出流

ByteArrayInputStream bais = null;

ByteArrayOutputStream baos = null;

//定義音頻輸入流

AudioInputStream ais = null;

//定義停止錄音的標(biāo)志,來(lái)控制錄音線程的運(yùn)行

Boolean stopflag = false;

//定義所需要的組件

JPanel jp1,jp2,jp3;

JLabel jl1=null;

JButton captureBtn,stopBtn,playBtn,saveBtn;

public static void main(String[] args) {

//創(chuàng)造一個(gè)實(shí)例

MyRecord mr = new MyRecord();

}

//構(gòu)造函數(shù)

public MyRecord()

{

//組件初始化

jp1 = new JPanel();

jp2 = new JPanel();

jp3 = new JPanel();

//定義字體

Font myFont = new Font("華文新魏",Font.BOLD,30);

jl1 = new JLabel("錄音機(jī)功能的實(shí)現(xiàn)");

jl1.setFont(myFont);

jp1.add(jl1);

captureBtn = new JButton("開(kāi)始錄音");

//對(duì)開(kāi)始錄音按鈕進(jìn)行注冊(cè)監(jiān)聽(tīng)

captureBtn.addActionListener(this);

captureBtn.setActionCommand("captureBtn");

//對(duì)停止錄音進(jìn)行注冊(cè)監(jiān)聽(tīng)

stopBtn = new JButton("停止錄音");

stopBtn.addActionListener(this);

stopBtn.setActionCommand("stopBtn");

//對(duì)播放錄音進(jìn)行注冊(cè)監(jiān)聽(tīng)

playBtn = new JButton("播放錄音");

playBtn.addActionListener(this);

playBtn.setActionCommand("playBtn");

//對(duì)保存錄音進(jìn)行注冊(cè)監(jiān)聽(tīng)

saveBtn = new JButton("保存錄音");

saveBtn.addActionListener(this);

saveBtn.setActionCommand("saveBtn");

this.add(jp1,BorderLayout.NORTH);

this.add(jp2,BorderLayout.CENTER);

this.add(jp3,BorderLayout.SOUTH);

jp3.setLayout(null);

jp3.setLayout(new GridLayout(1, 4,10,10));

jp3.add(captureBtn);

jp3.add(stopBtn);

jp3.add(playBtn);

jp3.add(saveBtn);

//設(shè)置按鈕的屬性

captureBtn.setEnabled(true);

stopBtn.setEnabled(false);

playBtn.setEnabled(false);

saveBtn.setEnabled(false);

//設(shè)置窗口的屬性

this.setSize(400,300);

this.setTitle("錄音機(jī)");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setLocationRelativeTo(null);

this.setVisible(true);

}

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("captureBtn"))

{

//點(diǎn)擊開(kāi)始錄音按鈕后的動(dòng)作

//停止按鈕可以啟動(dòng)

captureBtn.setEnabled(false);

stopBtn.setEnabled(true);

playBtn.setEnabled(false);

saveBtn.setEnabled(false);

//調(diào)用錄音的方法

capture();

}else if (e.getActionCommand().equals("stopBtn")) {

//點(diǎn)擊停止錄音按鈕的動(dòng)作

captureBtn.setEnabled(true);

stopBtn.setEnabled(false);

playBtn.setEnabled(true);

saveBtn.setEnabled(true);

//調(diào)用停止錄音的方法

stop();

}else if(e.getActionCommand().equals("playBtn"))

{

//調(diào)用播放錄音的方法

play();

}else if(e.getActionCommand().equals("saveBtn"))

{

//調(diào)用保存錄音的方法

save();

}

}

//開(kāi)始錄音

public void capture()

{

try {

//af為AudioFormat也就是音頻格式

af = getAudioFormat();

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

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

//打開(kāi)具有指定格式的行,這樣可使行獲得所有所需的系統(tǒng)資源并變得可操作。

td.open(af);

//允許某一數(shù)據(jù)行執(zhí)行數(shù)據(jù) I/O

td.start();

//創(chuàng)建播放錄音的線程

Record record = new Record();

Thread t1 = new Thread(record);

t1.start();

} catch (LineUnavailableException ex) {

ex.printStackTrace();

return;

}

}

//停止錄音

public void stop()

{

stopflag = true;

}

//播放錄音

public void play()

{

//將baos中的數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)據(jù)

byte audioData[] = baos.toByteArray();

//轉(zhuǎn)換為輸入流

bais = new ByteArrayInputStream(audioData);

af = getAudioFormat();

ais = new AudioInputStream(bais, af, audioData.length/af.getFrameSize());

try {

DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, af);

sd = (SourceDataLine) AudioSystem.getLine(dataLineInfo);

sd.open(af);

sd.start();

//創(chuàng)建播放進(jìn)程

Play py = new Play();

Thread t2 = new Thread(py);

t2.start();

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

//關(guān)閉流

if(ais != null)

{

ais.close();

}

if(bais != null)

{

bais.close();

}

if(baos != null)

{

baos.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

//保存錄音

public void save()

{

//取得錄音輸入流

af = getAudioFormat();

byte audioData[] = baos.toByteArray();

bais = new ByteArrayInputStream(audioData);

ais = new AudioInputStream(bais,af, audioData.length / af.getFrameSize());

//定義最終保存的文件名

File file = null;

//寫(xiě)入文件

try {

//以當(dāng)前的時(shí)間命名錄音的名字

//將錄音的文件存放到F盤(pán)下語(yǔ)音文件夾下

File filePath = new File("F:/語(yǔ)音文件");

if(!filePath.exists())

{//如果文件不存在,則創(chuàng)建該目錄

filePath.mkdir();

}

file = new File(filePath.getPath()+"/"+System.currentTimeMillis()+".mp3");

AudioSystem.write(ais, AudioFileFormat.Type.WAVE, file);

} catch (Exception e) {

e.printStackTrace();

}finally{

//關(guān)閉流

try {

if(bais != null)

{

bais.close();

}

if(ais != null)

{

ais.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

//設(shè)置AudioFormat的參數(shù)

public AudioFormat getAudioFormat()

{

//下面注釋部分是另外一種音頻格式,兩者都可以

AudioFormat.Encoding encoding = AudioFormat.Encoding.

PCM_SIGNED ;

float rate = 8000f;

int sampleSize = 16;

String signedString = "signed";

boolean bigEndian = true;

int channels = 1;

return new AudioFormat(encoding, rate, sampleSize, channels,

(sampleSize / 8) * channels, rate, bigEndian);

// //采樣率是每秒播放和錄制的樣本數(shù)

// float sampleRate = 16000.0F;

// // 采樣率8000,11025,16000,22050,44100

// //sampleSizeInBits表示每個(gè)具有此格式的聲音樣本中的位數(shù)

// int sampleSizeInBits = 16;

// // 8,16

// int channels = 1;

// // 單聲道為1,立體聲為2

// boolean signed = true;

// // true,false

// boolean bigEndian = true;

// // true,false

// return new AudioFormat(sampleRate, sampleSizeInBits, channels, signed,bigEndian);

}

//錄音類(lèi),因?yàn)橐玫組yRecord類(lèi)中的變量,所以將其做成內(nèi)部類(lèi)

class Record implements Runnable

{

//定義存放錄音的字節(jié)數(shù)組,作為緩沖區(qū)

byte bts[] = new byte[10000];

//將字節(jié)數(shù)組包裝到流里,最終存入到baos中

//重寫(xiě)run函數(shù)

public void run() {

baos = new ByteArrayOutputStream();

try {

System.out.println("ok3");

stopflag = false;

while(stopflag != true)

{

//當(dāng)停止錄音沒(méi)按下時(shí),該線程一直執(zhí)行

//從數(shù)據(jù)行的輸入緩沖區(qū)讀取音頻數(shù)據(jù)。

//要讀取bts.length長(zhǎng)度的字節(jié),cnt 是實(shí)際讀取的字節(jié)數(shù)

int cnt = td.read(bts, 0, bts.length);

if(cnt 0)

{

baos.write(bts, 0, cnt);

}

}

} catch (Exception e) {

e.printStackTrace();

}finally{

try {

//關(guān)閉打開(kāi)的字節(jié)數(shù)組流

if(baos != null)

{

baos.close();

}

} catch (IOException e) {

e.printStackTrace();

}finally{

td.drain();

td.close();

}

}

}

}

//播放類(lèi),同樣也做成內(nèi)部類(lèi)

class Play implements Runnable

{

//播放baos中的數(shù)據(jù)即可

public void run() {

byte bts[] = new byte[10000];

try {

int cnt;

//讀取數(shù)據(jù)到緩存數(shù)據(jù)

while ((cnt = ais.read(bts, 0, bts.length)) != -1)

{

if (cnt 0)

{

//寫(xiě)入緩存數(shù)據(jù)

//將音頻數(shù)據(jù)寫(xiě)入到混頻器

sd.write(bts, 0, cnt);

}

}

} catch (Exception e) {

e.printStackTrace();

}finally{

sd.drain();

sd.close();

}

}

}

}/span

JAVA 錄音程序 幫我講解下面這段程序吧。

你確定這個(gè)東西是播放的嗎?我感覺(jué)她應(yīng)該是存儲(chǔ)到緩存當(dāng)中了啊

java如何實(shí)現(xiàn)錄音的播放的java代碼

去oracle官方下載java多媒體支持庫(kù) java media framework 安裝完后自帶的有例子,可以播放mp3,可以做視頻監(jiān)控,可以播放常規(guī)格式的電影文件

怎么用java代碼實(shí)現(xiàn)audionote的錄音與文字的同步功能

頁(yè)面上錄音,那你的就是web程序,除非是applet程序,但是這樣就有局限性,客戶(hù)端必須安裝jdk. flex+java好像可以, 你可以研究下flex.


分享題目:java錄音代碼 html錄音代碼
網(wǎng)頁(yè)URL:http://weahome.cn/article/hhoipi.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部