當前位置:首頁 » 安卓系統 » android播放pcm

android播放pcm

發布時間: 2022-08-07 15:52:25

『壹』 android audiotrack 可以播放什麼格式

播放mp3的總是噪音,不知道原因,後來播放wav的倒是可以,
wav是沒有壓縮的pcm
java代碼
package com.lp;
import java.io.IOException; import java.io.InputStream;
import android.app.Activity; import android.content.Context;
import android.media.AudioFormat; import android.media.AudioManager;
import android.media.AudioTrack;
import android.media.AudioTrack.;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button play;
private Button stop;
private AudioTrack at;
private AudioManager am; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
play = (Button)findViewById(R.id.main_play);
stop = (Button)findViewById(R.id.main_stop);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(am.isSpeakerphoneOn()){
am.setSpeakerphoneOn(false);
}
setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);
am.setMode(AudioManager.MODE_IN_CALL); System.out.println(am.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL));
System.out.println("&&&&&&&&&&&&&"); System.out.println(am.getStreamVolume(AudioManager.STREAM_VOICE_CALL)); int bufferSizeInBytes = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT); if(at==null){
at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM);
System.out.println("22222");
new AudioTrackThread().start();
}else{
if(at.getPlayState()==AudioTrack.PLAYSTATE_PLAYING){
System.out.println("111111111");
}else{
System.out.println("33333");
at = new AudioTrack(AudioManager.STREAM_VOICE_CALL, 44100, AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSizeInBytes, AudioTrack.MODE_STREAM);
new AudioTrackThread().start();
}
} }
});
stop.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
at.stop();
at.release();
am.setMode(AudioManager.MODE_NORMAL);
}

});

}

class AudioTrackThread extends Thread{

@Override
public void run() {
byte[] out_bytes = new byte[44100];
InputStream is = getResources().openRawResource(R.raw.start);
int length ;
at.play();
try {
while((length = is.read(out_bytes))!=-1){
System.out.println(length);
at.write(out_bytes, 0, length);
}
} catch (IOException e) {
e.printStackTrace();
}
if(at.getPlayState()==AudioTrack.PLAYSTATE_PLAYING){
at.stop();
at.release();
am.setMode(AudioManager.MODE_NORMAL);
}

}
}
}

『貳』 ffplay如何播放pcm文件

pcm文件是模擬音頻信號經過數模轉換後直接形成的二進制序列。這是一種十分罕見的音頻文件格式。
可以通過以下步驟播放:
1、右鍵菜單第一個選項是「打開」,是因為我安裝了可以打開該文件的Au。也可以直接雙擊打開。
2、之後就會有導入配置的選擇
3、如果聲道重合,波形就會疊加。聽起來是粗獷的。
4、聲音調整正常後,可以導出成文件,以後可以使用音頻播放器直接播放。依次選擇「文件-導出-文件」,或者直接快捷Ctrl加Shift加E,打開導出設置。
5.點擊「格式設置」右側的「更改」進行格式更改。格式設置界面,選擇「波形音頻」,導出的會是WAV文件。
6、直接在導出設置界面點擊「格式」的下拉菜單,選擇「MP3音頻」。這裡面也有無損輸出的,選擇「WavePCM」即是。
7、選擇完成後,點擊「確定」開始到處,等待導出完成即可。有損導出會有有損導出的警告提示彈窗,點擊「是」繼續即可。
8、最後就可以使用ffply進行播放了。

『叄』 在做Android與pc伺服器通信,使用socket,udp協議,發送PCM語音,

This method blocks until a packet is received or a timeout has expired

『肆』 android中怎麼對音頻數據pcm進行解碼

工程代碼結構較為簡單:

簡單說下思路,先把PCM音頻數據從指定的路徑文件讀到內存,然後給AudioPlayer設置數據源,音頻參數等,最後執行播放,暫停,停止等操作

貼上部分類代碼片段:

publicclassAudioParam{

intmFrequency;//采樣率

intmChannel;//聲道

intmSampBit;//采樣精度

}

publicinterfacePlayState{

publicstaticfinalintMPS_UNINIT=0;//未就緒

publicstaticfinalintMPS_PREPARE=1;//准備就緒(停止)

publicstaticfinalintMPS_PLAYING=2;//播放中

publicstaticfinalintMPS_PAUSE=3;//暫停

}

『伍』 android能播放pcm文件嗎

原生系統應該不行,但畢竟是開源系統,你可以下載支持這個文件的播放器

『陸』 android直接播放pcm語音為什麼會有噪音

最近在做手機客戶端用G726編碼庫向機台發送語音消息的DEMO,弄了一周左右才解決.

中間碰到的問題賊多,主要是用AudioRecord採集聲音的時候,然後用AudioTrack播放經常會出現噪音,這樣的情況讓人實在是無法接受。

後來查谷歌實在是沒折了,於是再次翻查了下sipdroid的代碼,發現sipdroid在採集聲音後,每次都會調用一個函數,於是我猜測,這個函數應該跟去除噪音有關,於是寫了個DEMO,測試了一下,發現噪音還真消除了.

噪音消除演算法:

void calc1(short[] lin,int off,int len) {
int i,j;
for (i = 0; i < len; i++) {
j = lin[i+off];
lin[i+off] = (short)(j>>2);
}
}

自己錄制PCM,播放PCM的DEMO。

『柒』 android 怎麼播放wav音頻文件

下面這個方法就是如何讀取一個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);
}
上面的代碼中,缺少的部分應該是顯而易見的。正如你所看到的,僅僅支持16位,但在你可以修改代碼以支持8位(AudioTrack不支持任何其他解析度的)。

下面這個方法,則是用來讀取文件剩餘的部分 – 音頻數據。

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結構體,包含采樣率,解析度和聲道數已經足夠讓我們去播放我們讀取的音頻了。

如果我們不需要將全部音頻數據一次性放入內存中,我們可以使用一個InputStream,一點一點地讀取。

『捌』 安卓手機上pcm格式的文件有什麼用,能不能刪除占的空間很大。

可以刪除。

PCM文件具有流媒體特性,是數字通信的編碼方式之一,刪除後不會影響系統運行。

PCM文件被廣泛用於素材保存及音樂欣賞,CD、DVD以及我們常見的 WAV文件中均有應用,PCM文件能夠一邊讀一邊播放,而不需要把這個文件全部讀出後然後回放,這樣就可以做到不用下載 就可以實現收聽了。也可以做到一邊編碼一邊播放。

(8)android播放pcm擴展閱讀

PCM中文稱脈沖編碼調制(Pulse Code Molation),是70年代末發展起來的,記錄媒體之一的CD,在80年代初由飛利浦和索尼公司共同推出。

脈碼調制的音頻格式也被DVD-A所採用,它支持立體聲和5.1環繞聲,1999年由DVD討論會發布和推出的。脈沖編碼調制的比特率,從14-bit發展到16-bit、18-bit、20-bit直到24-bit;采樣頻率從44.1kHz發展到192kHz。

『玖』 android開發,怎麼把amr格式的位元組數組轉為pcm望大神賜教

先看下amr格式android支不支持播放,這個可能涉及到版權問題, google不支持。amr轉pcm這個只能找第三方軟體了

熱點內容
編譯成debug版本 發布:2024-03-29 09:06:55 瀏覽:884
wms伺服器地址 發布:2024-03-29 09:05:55 瀏覽:415
mep編程器 發布:2024-03-29 09:05:13 瀏覽:139
大小s我們一家訪問人 發布:2024-03-29 09:03:16 瀏覽:532
造物者編程 發布:2024-03-29 08:50:27 瀏覽:534
sql技能 發布:2024-03-29 08:50:23 瀏覽:56
希沃安卓下載安裝應用在哪裡 發布:2024-03-29 08:22:51 瀏覽:631
python和excel 發布:2024-03-29 07:47:03 瀏覽:861
postfix源碼下載 發布:2024-03-29 07:42:03 瀏覽:143
怎麼在電腦上玩手機伺服器 發布:2024-03-29 07:30:13 瀏覽:141