無音頻頭音頻數組,轉寫成可播放音頻文件
前言:請各大網友尊重本人原創知識分享,謹記本人部落格:南國以南i
需求:將一段沒有音頻頭的byte數組,轉寫成可播放的WAV文件
功能實現:
1.獲取不包含音頻頭的音頻數組
2.設置所需音頻格式資訊(.WAV)
2.設置文件存儲路徑,獲取File對象
3.傳入音頻數組、音頻格式、File對象參數生成文件
設置音頻格式資訊:AudioFormat 對象介紹:
對象可以包括屬性的集合。屬性是一個鍵值對:鍵屬於 String
類型,相關屬性值可為任意對象。屬性指定其他格式規範,如壓縮格式的比特率。屬性主要用作傳送往返於服務提供程式的其他音頻格式資訊的方法。
1 /** 2 * 音頻數組生成WAV音頻文件 3 * @param byteAudio 無音頻頭音頻數組 4 */ 5 public void outAudioFile(byte[] byteAudio){ 6 //設置音頻格式 7 AudioFormat audioFormat = new AudioFormat( 8 AudioFormat.Encoding.PCM_SIGNED,//音頻編碼方式 9 8000,//音頻取樣率 10 16,//音頻取樣位數 11 1,//音頻通道數 12 2 * 2,//位元組為單位的幀大小 13 8000,//每秒為單位的幀速率 14 false); 15 try { 16 //生成臨時文件 17 File srcFile = File.createTempFile("E:\\audionfile" + System.currentTimeMillis(), ".wav"); 18 //調用生成音頻文件方法 19 encodeDstFile(srcFile, byteAudio, audioFormat); 20 }catch (IOException e){ 21 log.debug("文件生成失敗"); 22 } 23 24 }
將文件轉寫到磁碟:AudioSystem介紹:
AudioSystem
類充當取樣音頻系統資源的入口點。此類允許查詢和訪問安裝在系統上的混頻器。AudioSystem
包括許多在不同格式間轉換音頻數據的方法,以及在音頻文件和流之間進行轉換的方法。
/** * . * 將文件轉寫到磁碟中 * * @param dstFile 目標文件 * @param pcmBytes 字元數組 * @param format 文件格式 * @throws IOException IO異常 */ public static void encodeDstFile( final File dstFile, final byte[] pcmBytes, final AudioFormat format) throws IOException { AudioInputStream audioInputStream = new AudioInputStream( new ByteArrayInputStream(pcmBytes), format, pcmBytes.length / format.getFrameSize()); AudioSystem.write(audioInputStream, AudioFileFormat.Type.WAVE, dstFile); }
效果展示:
本人親測!!!按照步驟完成以上程式碼即可生成WAV音頻文件,音頻文件正常播放!
個人總結:
我是南國以南i記錄點滴每天成長一點點,學習是永無止境的!轉載請附原文鏈接!!!