0
我想显示音频波形,我得到了这个代码它需要.raw音频输入并显示音频波形,但是当我把.3gp,.mp3音频我得到白噪声任何人都可以帮助我怎么能使它与.3gp一起工作,因为我需要使用.3gp音频来运行它。音频波形与.raw输入
InputStream is = getResources()。openRawResource(R.raw.test1);
TEST1是一个.raw文件
最终WaveformView mPlaybackView =(WaveformView)findViewById(R.id.playbackWaveformView);
short[] samples = null;
try {
samples = getAudioSample();
} catch (IOException e) {
e.printStackTrace();
}
if (samples != null) {
final FloatingActionButton playFab = (FloatingActionButton) findViewById(R.id.playFab);
mPlaybackThread = new PlaybackThread(samples, new PlaybackListener() {
@Override
public void onProgress(int progress) {
mPlaybackView.setMarkerPosition(progress);
}
@Override
public void onCompletion() {
mPlaybackView.setMarkerPosition(mPlaybackView.getAudioLength());
playFab.setImageResource(android.R.drawable.ic_media_play);
}
});
mPlaybackView.setChannels(1);
mPlaybackView.setSampleRate(PlaybackThread.SAMPLE_RATE);
mPlaybackView.setSamples(samples);
playFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!mPlaybackThread.playing()) {
mPlaybackThread.startPlayback();
playFab.setImageResource(android.R.drawable.ic_media_pause);
} else {
mPlaybackThread.stopPlayback();
playFab.setImageResource(android.R.drawable.ic_media_play);
}
}
});
}
}
@Override
protected void onStop() {
super.onStop();
mPlaybackThread.stopPlayback();
}
private short[] getAudioSample() throws IOException{
InputStream is =getResources().openRawResource(R.raw.test1);
byte[] data;
try {
data = IOUtils.toByteArray(is);
} finally {
if (is != null) {
is.close();
}
}
ShortBuffer sb = ByteBuffer.wrap(data).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer();
short[] samples = new short[sb.limit()];
sb.get(samples);
return samples;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
如何解压缩? –
@AbdulSamadKhan搜索网页为**如何解码MP3到PCM教程android sdk **。 PCM是数字音频(所有音频文件/格式必须在音箱正确播放之前解压缩到PCM,然后您还可以读取字节值以创建波形)。 –