android音頻播放
① 安卓手機用什麼音樂播放軟體音質最好
安卓手機推薦的音樂播放軟體:
1、PowerAMP
Music
Player:
這個是android設備中一個非常好用的音頻播放器,音質非常優秀,界面美觀,用戶體驗好,
它可以支持MP3、WAV、WMA、APE、FLAC等格式。軟體本身能夠支持無損格式的播放,可以看出軟體強大的解碼能力,而且支持均衡器設置,可以讓在聽音樂時選擇不同音效來達到最好的音樂播放效果。但是它也有缺點:正式版不是免費的,當然可以去下載破解版的,只不過不好找。
2、天天動聽:
我以前手機一直都用天天動聽,感覺界面很酷,功能又多。酷狗和他差不多,半斤八兩吧,他倆都支持自動下載歌手圖片,歌詞,待機桌面時可顯示迷你歌詞,挺好的。支持線控,用戶界面與體驗都不錯。
3、QQ音樂
估計你在電腦上用過QQ音樂播放器,QQ音樂,良好的播放體驗和龐大的音樂庫吸引了不少用戶,在QQ音樂中搜索各種想聽的中外歌曲,基本上沒有找不到的,並優先提供320K高品質音樂供用戶下載,並且歌曲的更新速度很快。
當然其他還有許多,例如:豆瓣FM、lcg播放器等等都不錯,可以自己去體驗一下
② Android音頻播放
最近需要在Android的客戶端中使用PCM聲音播放和錄制,簡單學習了一下。有不正確的地方還請指出。
首先有幾個概念需要了解一下:采樣頻率、聲道數、采樣位數。
采樣頻率一般是sample rate, 代表的是數字化音頻時每秒采樣的次數。常見的有44.1KHz(CD品質)、48KHz等。
這個很好理解,單聲道Mono就是聲音從一個方向傳出來;雙聲道Stereo也叫立體聲,聲音是從兩個方向傳來。通常的流行音樂中,仔細聽能發現每個聲道可能側重不同的樂曲聲部,比如左聲道吉他,右聲道鋼琴,人聲似乎兩個聲道都有,聽起來就像站在中間一樣。(這里沒有考證,隨便舉例)
每一個采樣都是一個數據點,采樣位數是指這個數據點使用了幾位來記錄。AudioTrack類只支持8位和16位的PCM音頻。8位就是2的8次方,即256個值;而16位則是2的16次方,有65536個值。
這個在音頻的編解碼中還是比較常用的。在PCM格式中,1秒鍾音頻的數據大小是SampleRate×Channel×Bit/8,單位是byte位元組。由於PCM本身沒有音頻幀的概念,所以通過這個公式就能計算出任意時長音頻的大小,或者得到任意大小音頻的時長。如果規定1個音頻幀是「每個聲道256個采樣」,雙聲道下就是512個采樣,那麼1幀的數據量就是256×Channel×Bit/8,同理可以推斷出1秒鍾有多少音頻幀等等。音頻幀的概念在各種編解碼中各有不同,但計算公式大同小異,這里不展開。
Android中音頻的播放使用的是AudioTrack類,具體用法非常簡單。
首先設置buffer大小。AudioTrack播放時需要先寫入buffer,如果這個buffer沒有寫滿,那麼這部分是不會播放的。所以buffer不能設置太小,這樣會導致播放不連貫;而buffer也不能設置太小,這樣不間斷寫入會消耗許多CPU資源。AudioTrack自帶了getMinBufferSize方法可以給出一個最小buffer,一般用這個值就可以。getMinBufferSize方法三個參數分別是sample rate、channel和bit。
設置完buffer size就可以實例化一個AudioTrack。其中第一個參數streamType是指不同的音頻流類型,包括STREAM_MUSIC、STREAM_ALARM、STREAM_VOICE_CALL、STREAM_RING等,是Android對不同音頻的分類。中間三個參數很好理解,第四個是buffer size,剛剛計算出來了。最後一個參數mode有兩種:MODE_STREAM和MODE_STATIC。前者是以流形式播放,後者則是一次性全部寫入然後播放。
調用實例的play()方法就可以開始播放了。不過播放得要有數據吧?要填寫數據就要用到write()方法。write方法中第一個參數是一個byte[]類型,是要寫入的數據源,可以是從文件流中讀取出來的;第二個參數offset是初始位移,即從source的哪個位置開始;第三個參數則是輸入長度。
當write方法寫滿一個AudioTrack的buffer時,就會有聲音播放出來了。
當播放完成後記得要把AudioTrack停止並釋放。