第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用java播放.wav文件

如何使用java播放.wav文件

ibeautiful 2019-08-03 14:03:49
如何使用java播放.wav文件我正在嘗試使用Java播放一個(gè)*.wav文件。我希望它能做到以下幾點(diǎn):當(dāng)按下按鈕時(shí),播放一個(gè)簡(jiǎn)短的嗶聲。我已經(jīng)在谷歌上搜索過(guò)了,但是大部分代碼都不起作用。有人能給我一個(gè)簡(jiǎn)單的代碼片段來(lái)播放.wav文件嗎?
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

最后,我成功地完成了下面的工作,它運(yùn)行得很好。

import java.io.File;import java.io.IOException;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.SourceDataLine;public class MakeSound {

    private final int BUFFER_SIZE = 128000;
    private File soundFile;
    private AudioInputStream audioStream;
    private AudioFormat audioFormat;
    private SourceDataLine sourceLine;

    /**
     * @param filename the name of the file that is going to be played
     */
    public void playSound(String filename){

        String strFilename = filename;

        try {
            soundFile = new File(strFilename);
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

        try {
            audioStream = AudioSystem.getAudioInputStream(soundFile);
        } catch (Exception e){
            e.printStackTrace();
            System.exit(1);
        }

        audioFormat = audioStream.getFormat();

        DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
        try {
            sourceLine = (SourceDataLine) AudioSystem.getLine(info);
            sourceLine.open(audioFormat);
        } catch (LineUnavailableException e) {
            e.printStackTrace();
            System.exit(1);
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }

        sourceLine.start();

        int nBytesRead = 0;
        byte[] abData = new byte[BUFFER_SIZE];
        while (nBytesRead != -1) {
            try {
                nBytesRead = audioStream.read(abData, 0, abData.length);
            } catch (IOException e) {
                e.printStackTrace();
            }
            if (nBytesRead >= 0) {
                @SuppressWarnings("unused")
                int nBytesWritten = sourceLine.write(abData, 0, nBytesRead);
            }
        }

        sourceLine.drain();
        sourceLine.close();
    }}





查看完整回答
反對(duì) 回復(fù) 2019-08-04
?
泛舟湖上清波郎朗

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊

最短的表單(不必安裝隨機(jī)庫(kù))?

public static void play(String filename){
    try
    {
        Clip clip = AudioSystem.getClip();
        clip.open(AudioSystem.getAudioInputStream(new File(filename)));
        clip.start();
    }
    catch (Exception exc)
    {
        exc.printStackTrace(System.out);
    }}

唯一的問(wèn)題是,在*.wav完成之后,沒(méi)有一種很好的方法阻止該方法關(guān)閉和釋放數(shù)據(jù)。clip.drain()說(shuō)它阻塞了但它不是。剪輯沒(méi)有運(yùn)行就在 start()..唯一的工作但是我發(fā)現(xiàn)的方法是:

// ...clip.start();while (!clip.isRunning())
    Thread.sleep(10);while (clip.isRunning())
    Thread.sleep(10);clip.close();



查看完整回答
反對(duì) 回復(fù) 2019-08-04
  • 3 回答
  • 0 關(guān)注
  • 480 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)