前言:請各大網友尊重本人原創知識分享,謹記本人博客:南國以南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記錄點滴每天成長一點點,學習是永無止境的!轉載請附原文鏈接!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/353.html
標籤:Java
上一篇:Maven大全
下一篇:Integer小知識,涉及IntegerCache,1000==1000為false而100==100為true
