現(xiàn)在的主流播放器都可以播放wav格式的,比如天天動(dòng)聽,酷狗,QQ音樂。
十載的簡(jiǎn)陽網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整簡(jiǎn)陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“簡(jiǎn)陽網(wǎng)站設(shè)計(jì)”,“簡(jiǎn)陽網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
天天動(dòng)聽(TTPOD)是上海水渡石信息技術(shù)有限公司開發(fā)音樂播放器,是一款功能強(qiáng)大、完全免費(fèi)的音樂播放軟件。支持歌詞和歌曲圖片下載,皮膚隨心更換,更有炫麗震撼的可視化效果,同時(shí)預(yù)置豐富的均衡器效果,支持音效增強(qiáng),簡(jiǎn)潔人性化的操作,給追求音樂品質(zhì)的你帶來了手機(jī)聽歌的全新體驗(yàn)。目前有Android,iOS,Windows Phone,Symbian,pc客戶端以及網(wǎng)頁版。
全面支持APE、FLAC、MP3、AAC、M4A、WMA、 ALAC、WAV等各種音頻格式
祝福首先百度搜索AMRPlayer,找到之后點(diǎn)擊下載。然后下載會(huì)出現(xiàn)下面的添加需要轉(zhuǎn)換的amr格式文件。然后再點(diǎn)擊上面的amrtowav。這時(shí)候彈出另存為,選擇桌面。然后點(diǎn)擊確定,這時(shí)候文件就轉(zhuǎn)換為wav格式了
下面這個(gè)方法就是如何讀取一個(gè)WAV文件的頭部:
private static final String RIFF_HEADER = "RIFF";
private static final String WAVE_HEADER = "WAVE";
private static final String FMT_HEADER = "fmt ";
private static final String DATA_HEADER = "data";
private static final int HEADER_SIZE = 44;
private static final String CHARSET = "ASCII";
/* ... */
public static WavInfo readHeader(InputStream wavStream) throws IOException,
DecoderException {
ByteBuffer buffer = ByteBuffer.allocate(HEADER_SIZE);
buffer.order(ByteOrder.LITTLE_ENDIAN);
wavStream.read(buffer.array(), buffer.arrayOffset(), buffer.capacity());
buffer.rewind();
buffer.position(buffer.position() + 20);
int format = buffer.getShort();
checkFormat(format == 1, "Unsupported encoding: " + format); // 1 means
// Linear
// PCM
int channels = buffer.getShort();
checkFormat(channels == 1 || channels == 2, "Unsupported channels: "
+ channels);
int rate = buffer.getInt();
checkFormat(rate = 48000 rate = 11025, "Unsupported rate: " + rate);
buffer.position(buffer.position() + 6);
int bits = buffer.getShort();
checkFormat(bits == 16, "Unsupported bits: " + bits);
int dataSize = 0;
while (buffer.getInt() != 0x61746164) { // "data" marker
Log.d(TAG, "Skipping non-data chunk");
int size = buffer.getInt();
wavStream.skip(size);
buffer.rewind();
wavStream.read(buffer.array(), buffer.arrayOffset(), 8);
buffer.rewind();
}
dataSize = buffer.getInt();
checkFormat(dataSize 0, "wrong datasize: " + dataSize);
return new WavInfo(new FormatSpec(rate, channels == 2), dataSize);
}
上面的代碼中,缺少的部分應(yīng)該是顯而易見的。正如你所看到的,僅僅支持16位,但在你可以修改代碼以支持8位(AudioTrack不支持任何其他分辨率的)。
下面這個(gè)方法,則是用來讀取文件剩余的部分 – 音頻數(shù)據(jù)。
public static byte[] readWavPcm(WavInfo info, InputStream stream)
throws IOException {
byte[] data = new byte[info.getDataSize()];
stream.read(data, 0, data.length);
return data;
}
我們讀取的WavInfo結(jié)構(gòu)體,包含采樣率,分辨率和聲道數(shù)已經(jīng)足夠讓我們?nèi)ゲシ盼覀冏x取的音頻了。
如果我們不需要將全部音頻數(shù)據(jù)一次性放入內(nèi)存中,我們可以使用一個(gè)InputStream,一點(diǎn)一點(diǎn)地讀取。